
文章插圖
Object簡(jiǎn)介Object類(lèi)是所有類(lèi)的父類(lèi),即每個(gè)類(lèi)都直接或間接繼承自該類(lèi) 。所以一個(gè)Object類(lèi)型的變量可以引用任何對(duì)象,不論是類(lèi)實(shí)例還是數(shù)組 。
在不明確給出父類(lèi)的情況下,Java會(huì)自動(dòng)把Object作為要定義類(lèi)的父類(lèi) 。
Object類(lèi)有一個(gè)默認(rèn)構(gòu)造方法public Object(),在構(gòu)造子類(lèi)實(shí)例時(shí),都會(huì)先調(diào)用這個(gè)默認(rèn)構(gòu)造方法 。
Object類(lèi)共13個(gè)方法
如圖可知,Object類(lèi)有12個(gè)成員方法,按照用途可以分為以下幾種
構(gòu)造函數(shù)hashCode和equale函數(shù)用來(lái)判斷對(duì)象是否相同,
wait(),wait(long),wait(long,int),notify(),notifyAll() 多線程場(chǎng)景使用
toString()和getClass, 打印類(lèi)信息/獲取類(lèi)信息
clone() 克隆對(duì)象
finalize()用于在垃圾回收
常用方法預(yù)覽
Object()
? 默認(rèn)構(gòu)造方法
clone()
protected native Object clone() throws CloneNotSupportedException;創(chuàng)建并返回此對(duì)象的一個(gè)副本(復(fù)制對(duì)象),用于實(shí)現(xiàn)對(duì)象的淺復(fù)制,只有實(shí)現(xiàn)了Cloneable接口才可以調(diào)用該方法,否則拋出CloneNotSupportedException異常 。
主要是JAVA里除了8種基本類(lèi)型傳參數(shù)是值傳遞,其他的類(lèi)對(duì)象傳參數(shù)都是引用傳遞,我們有時(shí)候不希望在方法里將參數(shù)改變,這是就需要在類(lèi)中重寫(xiě)clone方法
equals(Object obj)
用于比較兩個(gè)對(duì)象是否相等,底層用==實(shí)現(xiàn),比較的還是內(nèi)存地址,子類(lèi)想要比較兩個(gè)對(duì)象是否相等需要重寫(xiě)equals()方法
finalize()
? 當(dāng)垃圾回收器確定不存在對(duì)該對(duì)象的更多引用時(shí),由對(duì)象的垃圾回收器調(diào)用此方法,該方法用于釋放資源 。很少使用
Java允許在類(lèi)中定義一個(gè)名為finalize()的方法 。它的工作原理是:一旦垃圾回收器準(zhǔn)備好釋放對(duì)象占用的存儲(chǔ)空間,將首先調(diào)用其finalize()方法 。并且在下一次垃圾回收動(dòng)作發(fā)生時(shí),才會(huì)真正回收對(duì)象占用的內(nèi)存 。
getClass()
? 返回一個(gè)對(duì)象的運(yùn)行時(shí)類(lèi),獲得類(lèi)型的信息 。返回一個(gè)Class對(duì)象,經(jīng)常用于java反射機(jī)制
hashcode()
? 該方法將對(duì)象的內(nèi)存地址進(jìn)行哈希運(yùn)算,返回一個(gè)int類(lèi)型的哈希值(返回該對(duì)象的哈希碼值) 。
功能:是相等對(duì)象擁有相同的哈希碼,盡量讓不等的對(duì)象具有不同的哈希碼 。該方法用于哈希查找,可以減少在查找中使用equals的次數(shù),重寫(xiě)了equals方法一般都要重寫(xiě)hashCode方法 。這個(gè)方法在一些具有哈希功能的Collection中用到 。
一般必須滿(mǎn)足obj1.equals(obj2)==true 。可以推出obj1.hash- Code()==obj2.hashCode(),但是hashCode相等不一定就滿(mǎn)足equals 。不過(guò)為了提高效率,應(yīng)該盡量使上面兩個(gè)條件接近等價(jià) 。
如果不重寫(xiě)hashcode(),在HashSet中添加兩個(gè)equals的對(duì)象,會(huì)將兩個(gè)對(duì)象都加入進(jìn)去 。
notify()
該方法喚醒在該對(duì)象上等待的某個(gè)線程 。
notifyAll()
該方法喚醒在該對(duì)象上等待的所有線程 。
toString()
? 返回該對(duì)象的字符串表示 。以便用戶(hù)能夠獲得一些有關(guān)對(duì)象狀態(tài)的基本信息 。簡(jiǎn)單說(shuō)就是利用字符串來(lái)表示對(duì)象 。不重寫(xiě)toString()返回的是對(duì)象的類(lèi)路徑 + @ + 內(nèi)存地址hash后的16進(jìn)制字符串(如下所示源碼)
public String toString() {
return getClass().getName() + “@” + Integer.toHexString(hashCode());
}
wait()
? 導(dǎo)致當(dāng)前的線程等待,直到其他線程調(diào)用此對(duì)象的notify()方法或notifyAll()方法 。
wait(long timeout)
wait方法就是使當(dāng)前線程等待該對(duì)象的鎖,當(dāng)前線程必須是該對(duì)象的擁有者,也就是具有該對(duì)象的鎖 。wait()方法一直等待,直到獲得鎖或者被中斷 。wait(long timeout)設(shè)定一個(gè)超時(shí)間隔,如果在規(guī)定時(shí)間內(nèi)沒(méi)有獲得鎖就返回 。
以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問(wèn)題,請(qǐng)您及時(shí)就醫(yī)或請(qǐng)專(zhuān)業(yè)人士給予相關(guān)指導(dǎo)!
「愛(ài)刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對(duì)您有所幫助:- java畫(huà)圖像表格 java繪圖程序代碼
- excel字節(jié)數(shù)量統(tǒng)計(jì)方法 excel字符數(shù)函數(shù)
- java做桌面應(yīng)用程序 javaee學(xué)習(xí)路線
- java新手代碼大全 java怎么使用數(shù)組
- java編譯中文亂碼 java中文亂碼怎么解決
- php數(shù)組去重函數(shù) php數(shù)組去重的方法
- java開(kāi)發(fā)中常見(jiàn)中間件 java中間件技術(shù)有哪些
- java下載安裝教程 java下載網(wǎng)址官網(wǎng)
- java源代碼運(yùn)行操作方法 java源代碼怎么運(yùn)行
- 2021Java學(xué)習(xí)路線 java開(kāi)發(fā)學(xué)習(xí)路線
