java.lang.Object
阿新 • • 發佈:2018-01-10
類型 等於 慢慢 fin state otsu 般的 hash 給定 Class Object是類Object的根,所有的對象(包括數組)都實現了這個類的方法。
方法:
方法:
Modifier and type | Method | Description |
---|---|---|
protect Object | clone() | 創建並返回此對象的副本 |
Boolean | equals(Object obj) | 判斷對象是否相等 |
protect void | finalsize() | 當垃圾收集確定沒有該對象的引用時,垃圾收集器在該對象上調用該對象 |
類<?> | getClass() | 返回此Object的運行時類 |
int | hashCode() | 返回對象的哈希碼值 |
void | notify() | 喚醒正在等待對象監視器的單個線程 |
void | notifyAll() | 喚醒正在等待對象監視器的所有線程 |
String | toString() | 返回對象的字符串表示形式 |
void | wait() | 使當前線程等待,直到另一個線程調用該對象的notify()或notify All()方法 |
void | wait(long timeout) | 使當前線程等待,直到另一個線程調用該對象的notify()或notify All()方法或者指定時間已過 |
void | wait(long timeout,int nanos) | 使當前線程等待,直到另一個線程調用該對象的notify()或notityAll()方法或者某些其他線程中斷當前線程,或者指定時間已過???(不是很明白) |
方法詳解
public boolean equals(Object obj):
其他對象是否等於此。
equals方法在非空對象的引用上實現等價關系:
- 自反性:對於任意的非空X,都有X.equals(X)返回true。
- 對稱性:對於任意的非空引用 x 和 y ,x.equals(y)應該返回true當且僅當y.equals(x)返回true。
- 傳遞性:對於任意的非空引用 x , y 和 z ,如果x.equals(y)和y.equals(z)都返回true,那麽x.equals(z)返回true。
- 一致性:多次調用 x.equals(y)應始終返回true或者false,如果x或y的值沒有被修改。
- 對於任意的非空參考值x ,x.equals(null)返回false。
protected Object clone() throws CloneNotSupportedException:
創建並返回此對象的副本。 “復制”的精確含義可能取決於對象的類。 一般的意圖是,對於任何對象x ,表達式:
x.clone() != x
x.clone().getClass() == x.getClass()
x.clone().equals(x)
異常:CloneNotSupportedException - 如果對象的類不支持Cloneable接口。 覆蓋clone方法的子類也可以拋出此異常以指示實例無法克隆。
public String toString():
返回對象的字符串表示形式。 一般來說, toString方法返回一個“textually代表”這個對象的字符串。 結果應該是一個簡明扼要的表達,容易讓人閱讀。 建議所有子類覆蓋此方法。
public final void notify():
喚醒正在等待對象監視器的單個線程。 如果任何線程正在等待這個對象,其中一個被選擇被喚醒。 選擇是任意的,並且由實施的判斷發生。 線程通過調用wait方法之一等待對象的監視器。
喚醒的線程將無法繼續,直到當前線程放棄此對象上的鎖定為止。 喚醒的線程將以通常的方式與任何其他線程競爭,這些線程可能正在積極地競爭在該對象上進行同步; 例如,喚醒的線程在下一個鎖定該對象的線程中沒有可靠的權限或缺點。
該方法只能由作為該對象的監視器的所有者的線程調用。
線程以三種方式之一成為對象監視器的所有者:
通過執行該對象的同步實例方法。
通過執行在對象上synchronized synchronized語句的正文。
對於類型為Class,的對象,通過執行該類的同步靜態方法。
異常:IllegalMonitorStateException - 如果當前線程不是此對象的監視器的所有者。
public final void notifyAll():
喚醒正在等待對象監視器的所有線程。 線程通過調用wait方法之一等待對象的監視器。喚醒的線程將無法繼續,直到當前線程釋放該對象上的鎖。 喚醒的線程將以通常的方式與任何其他線程競爭,這些線程可能正在積極地競爭在該對象上進行同步; 例如,喚醒的線程在下一個鎖定該對象的線程中不會有可靠的特權或缺點。
protected void finalize() throws Throwable:
當垃圾收集確定不再有對該對象的引用時,垃圾收集器在對象上調用該對象。 一個子類覆蓋了處理系統資源或執行其他清理的finalize方法。
finalize的一般合同是,如果Java¢虛擬機已經確定不再有任何方法可以被任何尚未死亡的線程訪問的方法被調用,除非是由於最後確定的其他對象或類的準備工作所采取的行動。 finalize方法可以采取任何行動,包括使此對象再次可用於其他線程; 然而, finalize的通常目的是在對象不可撤銷地丟棄之前執行清除動作。 例如,表示輸入/輸出連接的對象的finalize方法可能會在對象被永久丟棄之前執行顯式I / O事務來中斷連接。
所述finalize類的方法Object執行任何特殊操作; 它只是返回正常。 Object的Object可以覆蓋此定義。
Java編程語言不能保證哪個線程將為任何給定的對象調用finalize方法。 但是,確保調用finalize的線程在調用finalize時不會持有任何用戶可見的同步鎖。 如果finalize方法拋出未捕獲的異常,則會忽略該異常,並終止該對象的定類。
在為對象調用finalize方法之後,在Java虛擬機再次確定不再有任何方式可以通過任何尚未被死亡的線程訪問此對象的任何方法的情況下,將采取進一步的操作,包括可能的操作由準備完成的其他對象或類別,此時可以丟棄對象。
finalize方法從不被任何給定對象的Java虛擬機調用多次。
finalize方法拋出的任何異常都會導致該對象的終止被停止,否則被忽略。
本人剛實習的小白板一塊,慢慢提高自己,有錯誤請大神指出。謝謝。
java.lang.Object