這篇文章主要介紹“Java Object類怎么使用”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“Java Object類怎么使用”文章能幫助大家解決問題。
比較運算符,即可以判斷基本類型又可以判斷引用類型
如果判斷基本類型,則判斷值是否相等
如果判斷引用類型,則判斷地址是否相等,即判斷是否為同一個對象
是object類的一個方法,只能判斷引用類型
object - equals源碼:
public boolean equals(Object obj) {
return (this == obj);
}可以清晰的看到,object類里的equals方法是判斷對象的地址是否相同(是不是同一個對象)
但是,其他數據類型類會重寫equals方法,比如String類的重寫:(判斷兩個字符串的值是否相等)
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
return (anObject instanceof String aString)
&& (!COMPACT_STRINGS || this.coder == aString.coder)
&& StringLatin1.equals(value, aString.value);
}實例:
String str1 = new String("hello");
String str2 = new String("hello");
System.out.println(str1 == str2); // false
System.out.println(str1.equals(str2)); // true提高具有哈希結構的容器的效率
兩個引用如果指向同一個對象,哈希值肯定(不沖突的情況下)一樣,反之不一樣
哈希值根據地址而來但并非地址
演示:
// hashCode A a = new A(); A a1 = new A(); A a2 = a; System.out.println(a.hashCode()); System.out.println(a1.hashCode()); System.out.println(a2.hashCode()); ------------------------------
輸出:
1324119927
990368553
1324119927
返回該對象的字符串表示
源碼:
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}實例:
// toString
A a3 = new A("dahe",25,"安全服務工程師");
System.out.println(a3.toString());輸出:
classes.A@41629346
包名.類名@十六進制的hashCode
現在我們在類中重寫一下toString方法(模板):
@Override
public String toString() {
return "A{" +
"name='" + name + '\'' +
", age=" + age +
", job='" + job + '\'' +
'}';
}再次運行上面的代碼,現在輸出如下:
A{name='dahe', age=25, job='安全服務工程師'}另外,當我們直接輸出對象時,會默認直接調用toString方法:
System.out.println(a3);
輸出:
A{name='dahe', age=25, job='安全服務工程師'}
當對象被回收時,系統自動調用該對象的finalize方法,子類可以重寫該方法,做一些釋放資源的操作
注意:在JDK18中。finalize被棄用了。它雖然可以幫助我們主動釋放系統底層資源,但是說實話,沒用過,Java 是自動管理內存的,使用它反而會導致潛在的系統安全風險,沒幫助不說反而是負擔,所以計劃移除了。
實例:
// finalize
A a4 = new A("dh",33,"架構師");
a4 = null; // 這是a4成為了垃圾,垃圾回收器就會回收對象
// 在銷毀對象之前,會調用對象的finalize方法
// 程序員就可以在這個方法中寫入自己的業務,釋放資源重寫finalize方法:
@Override
protected void finalize() throws Throwable {
System.out.println("我們銷毀對象");
}除此之外,還可以主動運行垃圾回收器:
System.gc(); // 主動調用垃圾回收器
關于“Java Object類怎么使用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。