1. 程式人生 > >java中Object類的函式詳解

java中Object類的函式詳解

1.clone方法(淺拷貝)

保護方法,實現物件的淺複製,只有實現了Cloneable接口才可以呼叫該方法,否則丟擲CloneNotSupportedException異常。

主要是JAVA裡除了8種基本型別傳引數是值傳遞,其他的類物件傳引數都是引用傳遞,我們有時候不希望在方法裡講引數改變,這是就需要在類中複寫clone方法。

2.getClass方法

final方法,獲得執行時型別。

3.toString方法

該方法用得比較多,一般子類都有覆蓋。

4.finalize方法

該方法用於釋放資源。因為無法確定該方法什麼時候被呼叫,很少使用。

5.equals方法

該方法是非常重要的一個方法。一般equals和==是不一樣的,但是在Object中兩者是一樣的。子類一般都要重寫這個方法。

6.hashCode方法

該方法用於雜湊查詢,可以減少在查詢中使用equals的次數,重寫了equals方法一般都要重寫hashCode方法。這個方法在一些具有雜湊功能的Collection中用到。

一般必須滿足obj1.equals(obj2)==true。可以推出obj1.hash- Code()==obj2.hashCode(),但是hashCode相等不一定就滿足equals。不過為了提高效率,應該儘量使上面兩個條件接近等價。

如果不重寫hashcode(),在HashSet中新增兩個equals的物件,會將兩個物件都加入進去。

7.wait方法

wait方法就是使當前執行緒等待該物件的鎖,當前執行緒必須是該物件的擁有者,也就是具有該物件的鎖。wait()方法一直等待,直到獲得鎖或者被中斷。wait(long timeout)設定一個超時間隔,如果在規定時間內沒有獲得鎖就返回。

呼叫該方法後當前執行緒進入睡眠狀態,直到以下事件發生。

(1)其他執行緒呼叫了該物件的notify方法。

(2)其他執行緒呼叫了該物件的notifyAll方法。

(3)其他執行緒呼叫了interrupt中斷該執行緒。

(4)時間間隔到了。

此時該執行緒就可以被排程了,如果是被中斷的話就丟擲一個InterruptedException異常。

8.notify方法

該方法喚醒在該物件上等待的某個執行緒。

9.notifyAll方法

該方法喚醒在該物件上等待的所有執行緒。

https://www.cnblogs.com/Jacck/p/8022147.html