Object類上的方法

1.getClass:java

public final native Class<?> getClass();數組

返回當前對象運行時的類的對象。數據結構

2.hashCode:性能

public native int hashCode();this

這個方法是爲哈希表這種數據結構提供支持的。(例如HashMap)spa

hashcode 的通用約定爲:線程

1)在一個java應用中在同一個對象上調用屢次hashCode方法應該返回一樣的int結果。code

可是int結果沒必要保持一致性在同一個java應用的兩次執行中。對象

2)若是兩個對象是相等的(equals方法返回true),則hashCode方法必須返回相同的int結果。接口

3)若是兩個對象經過equals方法不相等,不要求他們的hashCode方法必須返回不一樣的int結果,可是

不一樣對象上返回不一樣的hashCode能夠提升哈希表的性能(縮短鏈表的長度)。

3.equals:

public boolean equals(Object obj) {
return (this == obj);
}

4.clone:

protected native Object clone() throws CloneNotSupportedException;

注意兩點:第一此方法是protected,只有子類能夠調用;第二,子類必須實現Cloneable接口,否則此方法會拋出CloneNotSupportedException異常。

全部數組默認爲實現了Cloneable接口,因此數組都有clone方法。另外,這個方法是建立一個新的對象,而且使用被拷貝的對象的屬性值來初始化新對象的屬性。

而並非將屬性也拷貝一份。因此此方法是一個淺拷貝,並非深拷貝。

5.toString:

public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

6.notify:

public final native void notify();

喚醒一個正在等待此對象上的線程。若是有多個等待線程,則任意挑選一個喚醒。具體挑選哪一個依賴具體實現。

被喚醒的線程不會當即執行,直到當前線程釋放對象上的鎖。被喚醒的線程還要和其餘想要獲取鎖的線程競爭鎖。

此方法只能被已經獲取對象上的鎖的線程調用。

7.notifyAll:

public final native void notifyAll();

喚醒全部等待在此對象上的線程。其餘和notify方法同樣。

8.wait:

public final void wait() throws InterruptedException {
wait(0L);
}

致使當前線程進入等待狀態直到被喚醒(notified或者interrupted),此方法和調用wait(0L, 0)效果同樣。

public final native void wait(long timeoutMillis) throws InterruptedException;

9.finalize

此方法在java9中已經申明爲Deprecated,並且在其餘版本中也極不推薦使用,因此不作介紹了。

相關文章
相關標籤/搜索