構(gòu)造函數(shù)
hashCode() 和 equals() 函數(shù)用來(lái)判斷對(duì)象是否相同,
wait(), wait(long), wait(long,int), notify(), notifyAll() 線程等待和喚醒。
toString() 和 getClass()用于轉(zhuǎn)換字符串和獲取類
clone()用于拷貝對(duì)象,有深拷貝和淺拷貝
finalize() 用于在垃圾回收
?clone方法
保護(hù)方法留量,實(shí)現(xiàn)對(duì)象的淺復(fù)制,只有實(shí)現(xiàn)了 Cloneable 接口才可以調(diào)用該方法阳仔,否則拋出 CloneNotSupportedException 異常。
2.2 getClass 方法
final 方法怕磨,獲得運(yùn)行時(shí)類的類型始花。
2.3 toString 方法
返回一個(gè) String 對(duì)象,用來(lái)標(biāo)識(shí)自己符欠。該方法用得比較多嫡霞,一般子類都有覆蓋。
2.4 finalize 方法
該方法用于釋放資源希柿。因?yàn)闊o(wú)法確定該方法什么時(shí)候被調(diào)用,很少使用养筒。
(更多關(guān)于 finalize 方法曾撤,請(qǐng)移步Java面試大綱系列:final, finally, finalize 的區(qū)別)
equals 方法
該方法是非常重要的一個(gè)方法。一般來(lái)說(shuō) equals 和 == 定義是不一樣的晕粪。equals比較堆內(nèi)存中的值是否相等挤悉,而==比較是否在指向同一個(gè)堆內(nèi)存地址(即比較棧中的值),也就是說(shuō)==一定equals巫湘,equals不一定==装悲。但默認(rèn)的equals方法和==效果相同,所以需要重寫(xiě)equals尚氛。
hashCode 方法
該方法用于哈希查找诀诊,重寫(xiě)了 equals 方法一般都要重寫(xiě) hashCode 方法。這個(gè)方法在一些具有哈希功能的 Collection 中用到阅嘶。
一般必須滿足 obj1.equals(obj2) == true属瓣。 可以推出 obj1.hashCode() == obj2.hashCode(), 但是 hashCode 相等不一定就滿足 equals讯柔。 不過(guò)為了提高效率抡蛙,應(yīng)該盡量使上面兩個(gè)條件接近等價(jià)。
2.7 wait 方法
wait 方法就是使當(dāng)前線程等待該對(duì)象的鎖魂迄,當(dāng)前線程必須是該對(duì)象的擁有者粗截,也就是具有該對(duì)象的鎖。wait() 方法一直等待捣炬,直到獲得鎖或者被中斷熊昌。wait(long timeout) 設(shè)定一個(gè)超時(shí)間隔怠晴,如果在規(guī)定時(shí)間內(nèi)沒(méi)有獲得鎖就返回。
調(diào)用該方法后當(dāng)前線程進(jìn)入睡眠狀態(tài)浴捆,直到以下事件發(fā)生蒜田。
(1)其他線程調(diào)用了該對(duì)象的 notify 方法。
(2)其他線程調(diào)用了該對(duì)象的 notifyAll 方法选泻。
(3)其他線程調(diào)用了 interrupt 中斷該線程冲粤。
(4)時(shí)間間隔到了。
此時(shí)該線程就可以被調(diào)度了页眯,如果是被中斷的話就拋出一個(gè)InterruptedException 異常梯捕。
2.8 notify 方法
該方法喚醒在該對(duì)象上等待的某個(gè)線程。
2.9 notifyAll 方法
該方法喚醒在該對(duì)象上等待的所有線程窝撵。