下面小編就為大家帶來一篇關於Java Object你真的了解了嗎。小編覺得蠻不錯的,現在就分享給大家,也給大家做個參考。一起跟著小編過來看看吧
導讀: 在平時的coding中hashCode()和equals()的使用的場景有哪些? clone深複製怎麼實現? wait()和notify()有什麼作用? finalize()方法幹嘛的?看似coding使用的不多,不重要,但是有沒有跟我一樣,想好好的了解一下的。畢竟是基礎中的基礎。
下面給出一個簡單比較全面的概要:
#1. hashCode()和equals()
public boolean equals(Object obj) {return (this == obj);} public native int hashCode();
1.當equals()方法被override時,hashCode()也要被override.
2.當equals()傳回true,hashcode一定相等。即:相等(相同)的物件必須具有相等的雜湊碼(或雜湊碼)
3.如果兩個物件的hashCode相同,它們並不一定相同。
4.在集合查找時,hashcode能大幅降低物件比較次數,提高查找效率!
在判斷重複元素時,直接透過hashcode()方法,定位到桶位置,如果該位置有元素,再呼叫equals()方法判斷是否相等。而不是遍歷每一個元素比較equals()!
2. clone() 深複製
public class Animal implements Cloneable { private int height; private int age; public Animal(int height, int age){ this.height = height; this.age = age; } @Override public Object clone() throws CloneNotSupportedException { return super.clone(); } } public class People implements Cloneable { private int height; private int age; private Animal a; public People(int height, int age,Animal a){ this.height = height; this.age = age; this.a = a; } @Override public Object clone() throws CloneNotSupportedException { People p = (People) super.clone(); p.a = (Animal) a.clone(); return p; } } Animal a1 = new Animal(100,3); People p1 = new People(173,24,a1); //深复制 People p2 = (People) p1.clone();
3. wait()和notify()
•只有在取得該物件鎖定之後才能調用,否則拋IllegalMonitorStateException例外
•任何一個時刻,物件的控制權(monitor)只能被一個執行緒擁有。
執行緒取得控制權的方法有三:
#1. 執行物件的某個同步實例方法。
2. 執行物件對應類別的同步靜態方法。
3. 執行對該物件加上同步鎖定的同步區塊。
執行對該物件加上同步鎖定的範例:
synchronized (pepoleObject) { pepoleObject.notifyAll(); pepoleObject.wait(); }
4. finalize()
當垃圾回收器當確定不存在對該物件的更多引用時,由物件的垃圾加收器呼叫此方法,只能呼叫一次。當物件被回收時需要配置系統資源或執行其他清除,子類別重寫finalize方法實作。
以上是關於Java Object的程式碼實例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

關於曲線積分中變量替換的疑問本文將針對一個曲線積分計算中變量替換的步驟進行詳細解釋。提問者在計算一...

微信小程序申請流程及費用詳解朋友委託開發微信小程序商城,在申請過程中遇到一些關於費用和流程的問題,...

Java緩存數據無法獲取的原因分析及優化方案在Java項目中,將大量數據緩存到內存中以便快速訪問是一個常見的�...

深入Java:值得探索的虛擬機世界很多Java開發者在掌握了基礎語法和常用框架後,都希望進一步提升自己的技術�...

EasyExcel模板填充合併單元格時的常見問題在使用EasyExcel進行Excel...

系統對接中的字段映射挑戰及其解決方案在系統對接過程中,經常會遇到需要將一個系統的接口字段映射到另一...

SpringBoot應用中PgJDBC連接池拋出PSQLException:ERROR:cancelingstatementduetouserrequest異常在使用SpringBoot MyBatis-Plus ...


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

WebStorm Mac版
好用的JavaScript開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

SublimeText3 Linux新版
SublimeText3 Linux最新版

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。