4.Object有哪些公用方法?

Object有哪些公用方法?

1.clone方法

保護方法,實現對象的淺複製,只有實現了Cloneable接口才能夠調用該方法,不然拋出CloneNotSupportedException異常。函數

主要是JAVA裏除了8種基本類型傳參數是值傳遞,其餘的類對象傳參數都是引用傳遞,咱們有時候不但願在方法裏講參數改變,這是就須要在類中複寫clone方法。spa

2.getClass方法

final方法,得到運行時類型。線程

3.toString方法

該方法用得比較多,通常子類都有覆蓋。code

4.finalize方法

該方法用於釋放資源。由於沒法肯定該方法何時被調用,不多使用。對象

5.equals方法

該方法是很是重要的一個方法。通常equals和==是不同的,可是在Object中二者是同樣的。子類通常都要重寫這個方法。接口

6.hashCode方法

該方法用於哈希查找,能夠減小在查找中使用equals的次數,重寫了equals方法通常都要重寫hashCode方法。這個方法在一些具備哈希功能的Collection中用到。事件

通常必須知足obj1.equals(obj2)==true。能夠推出obj1.hashCode()==obj2.hashCode(),可是hashCode相等不必定就知足equals。不過爲了提升效率,應該儘可能使上面兩個條件接近等價。資源

若是不重寫hashCode(),在HashSet中添加兩個equals的對象,會將兩個對象都加入進去。get

7.wait方法

wait方法就是使當前線程等待該對象的鎖,當前線程必須是該對象的擁有者,也就是具備該對象的鎖。wait()方法一直等待,直到得到鎖或者被中斷。wait(long timeout)設定一個超時間隔,若是在規定時間內沒有得到鎖就返回。源碼

調用該方法後當前線程進入睡眠狀態,直到如下事件發生。

  • (1)其餘線程調用了該對象的notify方法。

  • (2)其餘線程調用了該對象的notifyAll方法。

  • (3)其餘線程調用了interrupt中斷該線程。

  • (4)時間間隔到了。

此時該線程就能夠被調度了,若是是被中斷的話就拋出一個InterruptedException異常。

8.notify方法

該方法喚醒在該對象上等待的某個線程。

9.notifyAll方法

該方法喚醒在該對象上等待的全部線程。

源碼

public class Object{
    //公共構造函數
    public Object();
    //公共實例方法
    public boolean equals(Object obj);
    public native int hashCode();
    public final native Class getClass();
    public String toString();
    public final native void notify();
    public final native void notifyAll();
    public final void wait() throws InterruptedException;
    public final native void wait(long timeout) throws InterruptedException; 
    public final void wait(long timeout, int nanos) throws InterruptedException; 
    //保護實例方法
    protected native Object clone();
    protected void finalize() throws Throwable; 

}
相關文章
相關標籤/搜索