Object類的介紹:
Class Object是類Object結構的根。 每個班都有Object作為超類。 所有對象(包括數組)都實現了這個類的方法。
Object類的方法
1. registerNatives()
1.1 本地方法是聯系Java程序和底層主機操作系統的連接方法。
2. clone()
2.1
protected Object clone()throws CloneNotSupportedException
按照慣例,返回的對象應該通過調用super.clone獲得。 如果一個類和它的所有超類(除了Object )遵守這個慣例,那將是x.clone().getClass() == x.getClass()的情況。
按照慣例,此方法返回的對象應該與此對象(正被克隆)無關。 為了實現這一獨立性,可能需要修改super.clone返回的對象的一個或多個字段。 通常,這意味著復制構成被克隆的對象的內部“深層結構”的任何可變對象,并通過引用該副本替換對這些對象的引用。 如果一個類僅包含原始字段或對不可變對象的引用,則通常情況下, super.clone返回的對象中的字段通常不需要修改。
clone的方法Object執行特定的克隆操作。 首先,如果此對象的類不實現接口Cloneable ,則拋出CloneNotSupportedException 。 請注意,所有數組都被認為是實現接口Cloneable ,并且數組類型T[]的clone方法的返回類型是T[] ,其中T是任何引用或原始類型。 否則,該方法將創建該對象的類的新實例,并將其所有字段初始化為完全符合該對象的相應字段的內容,就像通過賦值一樣。 這些字段的內容本身不被克隆。 因此,該方法執行該對象的“淺拷貝”,而不是“深度拷貝”操作。
Object類本身并不實現接口Cloneable ,因此在類別為Object的對象上調用clone方法將導致運行時拋出異常。
3. equals
3.1.public boolean equals(Object obj)
3.2
equals方法在非空對象引用上實現等價關系:
自反性 :對于任何非空的參考值x , x.equals(x)應該返回true 。
它是對稱的 :對于任何非空引用值x和y , x.equals(y)應該返回true當且僅當y.equals(x)回報true 。
傳遞性 :對于任何非空引用值x , y和z ,如果x.equals(y)回報true個y.equals(z)回報true ,然后x.equals(z)應該返回true 。
它是一致的 :對于任何非空引用值x和y ,多次調用x.equals(y)始終返回true或始終返回false ,沒有設置中使用的信息equals比較上的對象被修改。
對于任何非空的參考值x , x.equals(null)應該返回false 。
4. finalize
4.1 protected void finalize() throws Throwable
4.2
當垃圾收集確定不再有對該對象的引用時,垃圾收集器在對象上調用該對象。 一個子類覆蓋了處理系統資源或執行其他清理的finalize方法。
finalize的一般合同是,如果Java¢虛擬機已經確定不再有任何方法可以被任何尚未死亡的線程訪問的方法被調用,除非是由于最后確定的其他對象或類的準備工作所采取的行動。 finalize方法可以采取任何行動,包括使此對象再次可用于其他線程; 然而, finalize的通常目的是在對象不可撤銷地丟棄之前執行清除動作。 例如,表示輸入/輸出連接的對象的finalize方法可能會在對象被永久丟棄之前執行顯式I / O事務來中斷連接.
5. getClass
5.1 public final 類<?> getClass()
5.2
返回此Object的運行時類。 返回的類對象是被表示類的static synchronized方法鎖定的對象。
6.hashCode
6.1 public int hashCode()
6.2
只要在執行Java應用程序時多次在同一個對象上調用該方法, hashCode方法必須始終返回相同的整數,前提是修改了對象中equals比較中的信息。 該整數不需要從一個應用程序的執行到相同應用程序的另一個執行保持一致。
如果根據equals(Object)方法兩個對象相等,則在兩個對象中的每個對象上調用hashCode方法必須產生相同的整數結果。
7. notify
7.1 public final void notify()
7.2
喚醒正在等待對象監視器的單個線程。 如果任何線程正在等待這個對象,其中一個被選擇被喚醒。 選擇是任意的,并且由實施的判斷發生。 線程通過調用wait方法之一等待對象的監視器。
8.notifyAll
8.1 public final void notifyAll()
8.2
喚醒正在等待對象監視器的所有線程。 線程通過調用wait方法之一等待對象的監視器。
9. toString
9.1 public String toString()
9.2
返回對象的字符串表示形式。 一般來說, toString方法返回一個“textually代表”這個對象的字符串。 結果應該是一個簡明扼要的表達,容易讓人閱讀。 建議所有子類覆蓋此方法。
該toString類方法Object返回一個由其中的對象是一個實例,該符號字符`的類的名稱的字符串@ ”和對象的哈希碼的無符號的十六進制表示。 換句話說,這個方法返回一個等于下列值的字符串:
getClass().getName() + '@' + Integer.toHexString(hashCode())
10. wait()
10.1 public final void wait() throws InterruptedException
10.2
導致當前線程等待,直到另一個線程調用該對象的notify()方法或notifyAll().換句話說,這個方法的行為就好像簡單地執行呼叫wait(0) 。
當前線程必須擁有此對象的監視器。線程釋放此監視器的所有權,并等待直到另一個線程通過調用notify方法或notifyall方法通知等待此對象監視器的線程喚醒。然后線程等待,直到它可以重新獲得監視器的所有權并繼續執行。
11. wait(long timeout)
11.1 public final void wait(long timeout) throws InterruptedException
11.2
導致當前線程等待,直到另一個線程調用該對象的notify()方法或notifyAll()或指定的時間已過
此方法使當前線程將自身置于此對象的等待集中,然后放棄此對象上的所有同步聲明。出于線程調度目的,線程將被禁用,并處于休眠狀態,直到發生以下四種情況之一:
1. 其他一些線程調用此對象的notify方法,而線程恰好被任意選擇為要喚醒的線程;
2. 其他一些線程為此對象調用notifyall方法;
3. 其它一些線程interrupt方法終端當前線程;
4. 指定的實時時間已過,或多或少。但是,如果超時為零,則不考慮實時性,線程只需等待通知;
12. wait(long timeout,int nanos)
12.1 public final void wait(long timeout,int nanos) throws InterruptedException
12.2
使當前線程等待,直到另一個線程為此對象調用notify方法或notifyall方法,或某個其他線程中斷當前線程,或經過一定的實時時間
此方法類似于一個參數的wait方法,但它允許更好地控制在放棄之前等待通知的時間。以納秒為單位的實時量表示為:1000000*timeout+nanos(納秒)。在所有其他方面,此方法與一個參數的方法wait(long)執行相同的操作。特別地,wait(0,0)與wait(0)的含義相同;
當前的線程必須擁有該對象的顯示器。 線程釋放此監視器的所有權,并等待直到發生以下兩種情況之一:
另一個線程通知等待該對象的監視器的線程通過調用notify方法或notifyAll方法來喚醒。
由timeout毫秒加nanos納秒參數指定的超時時間已過。
然后線程等待,直到它可以重新獲得監視器的所有權并恢復執行。