本篇文章為大家帶來了關於java的相關知識,其中主要介紹了關於Object類別的相關問題,包括了Object類別是什麼、Object類別中的equals方法、hashCode方法等等內容,下面一起來看一下,希望對大家有幫助。
推薦學習:《java影片教學》
Object 是 Java 類別庫中的一個特殊類,也是所有類別的父類別。
也就是說,Java 允許把任何類型的物件賦給 Object 類型的變數。
java裡面除了Object類,所有的類別存在繼承關係的。
Object 類別位於 java.lang 套件中,編譯時會自動導入, 當一個類別被定義後,如果沒有指定繼承的父類,那麼預設父類別就是 Object 類別。
class Person {} class Student {} public class Test03 { public static void func(Object o) { } public static void main(String[] args) { func(new Person()); func(new Student()); } public static void main1(String[] args) { Object o = new Person(); Object o2 = new Student(); } }
下面來看Object類別中都有什麼方法
## 本篇會簡單介紹hashCode(),equals()
#2.Object類別中的equals方法下面看這樣一段程式碼
class Person { public String dz; public Person(String dz) { this.dz = dz; } @Override public String toString() { return "Person{" + "dz='" + dz + '\'' + '}'; } } class Student { } public class Test03 { public static void main(String[] args) { Person person = new Person("beijing"); Person person1 = new Person("beijing"); System.out.println(person == person1); }
如果直接這樣比較,看位址是否相同,就會輸出false,輸出是錯誤的
那麼如果要比較,有什麼方法嗎
在java中提供了一個方法是equals,可以用來比較兩個物件是否相同
System.out.println(person.equals(person1));
可以看到裡面比較的還是this和obj,也就是目前傳進來的參數,所以才是false。 那麼如何用equals進行比較
那就要重寫一個equals才可以進行比較
@Override public boolean equals(Object obj) { //判断当前obj参数是否为null if (obj == null) { return false; } if (this == obj) { return true; } //不是Person类对象 if (!(obj instanceof Person)) { return false; } Person ret = (Person) obj; return this.dz.equals(ret.dz); }
我們可以用String幫忙重寫equals了
此時equals就可以比較了
比較物件中內容是否相同的時候 要重寫equals
使用hashCode可以計算出特定的物件位置,也就是記憶體位址,然後調Integer.toHexString()方法,將這個位址以16進位輸出##兩個dz是相同的,然後直接用hashCode計算記憶體位址,然後程式碼發現,記憶體位址是不同的說明直接這樣中hashCode是不行的,那就要重新實作一個hashCode,#,
下面重寫hashCode,然後運行程式碼試試看,果然重寫之後,記憶體位址相同了@Override public int hashCode() { return Objects.hash(dz); }登入後複製
4.編譯器自動產生equals和hashCode
######這就是產生好了的 equals和hashCode###@Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Person person = (Person) o; return Objects.equals(dz, person.dz); }
以上是Java中的Object類別知識點歸納的詳細內容。更多資訊請關注PHP中文網其他相關文章!