<a href="http://www.verejava.com/?id=16992832835152">http://www.verejava.com/?id=16992832835152</a>java
/** 知識點: Object 類 注意: 1. Object 是全部類的根類, 也就是說全部類默認都繼承Object 只是省略沒有寫 2. 當 println()輸出一個對象的時候 自動調用了 Object的 toString() 方法 3. Object toString() 方法返回的是 : 類名+@+16進制的哈希碼hashCode地址 哈希碼 表明對象的內存地址,因此若是比較兩個對象的引用相等==必須 哈希碼相等 4. Object equals(Object obj) 方法比較的也是引用內部是以==實現的 5. String 對象的equals()方法怎麼是比較內容了? 6. 若是要equals()比較兩個對象的內容相等咱們須要複寫equals 方法 7. 當Object的子類複寫了 toString() 方法, println()輸出時調用子類複寫的 toString() 方法 8. 若是複寫了equals()方法,爲了保證對象相等哈希碼hashcode必須相等的特性, 咱們也要複寫hashCode()方法使保持對象的一致性 9. Object 能夠接收任意引用數據類型(類,數組,接口) 回顧知識點: 1. 若是一個類定義了帶參數的構造方法, 當用不帶參數的構造方法調用時,java 虛擬機不會自動生成默認的構造方法,必須得手動顯示定義不帶參數的默認構造方法。 */ public class TestObject { public static void main(String[] args) { //實例化一個 Student Object p=new Student("李明"); Student p2=(Student)p; Student p3=new Student("張濤"); Student p4=new Student("李明"); System.out.println(p); System.out.println(p==p2); System.out.println(p3); System.out.println(p.equals(p3)); System.out.println(p==p4); System.out.println(p.equals(p4)); System.out.println(p); System.out.println(p4); Person p5=new Student("李明"); System.out.println(p4.equals(p5)); String[] p6=new String[1]; p6[0]="李明"; System.out.println(p4.equals(p6)); } } interface Person { /** 什麼人能夠說話 */ public void say(); } class Student extends Object implements Person { private String name; public Student() { } public Student(String name) { this.name=name; } public String getName() { return this.name; } public void say() { System.out.println("學生會說英語"); } public boolean equals(Object obj) { //若是地址都相等, 兩個對象確定相等 if(this==obj) { return true; } //判斷是不是 Student 對象實例 if(obj instanceof Student) { //將obj向下轉型成 Student Student p=(Student)obj; //若是內容相等返回true if(this.name.equals(p.getName())) { return true; } } return false; } public int hashCode() { return this.name.hashCode(); } public String toString() { return this.name; } }
<a href="http://www.verejava.com/?id=16992832835152">http://www.verejava.com/?id=16992832835152</a>數組