新聞中心
Object

創(chuàng)新互聯(lián) - 達(dá)州電信機(jī)房,四川服務(wù)器租用,成都服務(wù)器租用,四川網(wǎng)通托管,綿陽服務(wù)器托管,德陽服務(wù)器托管,遂寧服務(wù)器托管,綿陽服務(wù)器托管,四川云主機(jī),成都云主機(jī),西南云主機(jī),達(dá)州電信機(jī)房,西南服務(wù)器托管,四川/成都大帶寬,大帶寬服務(wù)器,四川老牌IDC服務(wù)商
java.lang.Object
public class ObjectClass Object 是類層次的根。 每個類都有 Object 作為超類。 所有對象,包括數(shù)組,都實現(xiàn)了這個類的方法。
構(gòu)造函數(shù)摘要
| 構(gòu)造函數(shù) | 描述 |
|---|---|
| Object() |
方法總結(jié)
| 修飾符和類型 | 方法 | 描述 |
|---|---|---|
| protected Object | clone() | 創(chuàng)建并返回此對象的副本。 |
| boolean | equals(Object obj) | 指示其他對象是否“等于”這個對象。 |
| protected void | finalize() | 當(dāng)垃圾收集確定不再有對該對象的引用時,由對象上的垃圾收集器調(diào)用。 |
| Class> | getClass() | 返回此 Object 的運行時類。 |
| int | hashCode() | 返回對象的哈希碼值。 |
| void | notify() | 喚醒正在此對象的監(jiān)視器上等待的單個線程。 |
| void | notifyAll() | 喚醒正在此對象的監(jiān)視器上等待的所有線程。 |
| String | toString() | 返回對象的字符串表示形式。 |
| void | wait() | 使當(dāng)前線程等待,直到另一個線程為此對象調(diào)用 notify() 方法或 notifyAll() 方法。 |
| void | wait(long timeout) | 使當(dāng)前線程等待,直到另一個線程為此對象調(diào)用 notify() 方法或 notifyAll() 方法,或者經(jīng)過了指定的時間量。 |
| void | wait(long timeout, int nanos) | 導(dǎo)致當(dāng)前線程等待,直到另一個線程為此對象調(diào)用 notify() 方法或 notifyAll() 方法,或者某個其他線程中斷當(dāng)前線程,或者已經(jīng)過了一定的實時時間。 |
構(gòu)造函數(shù)詳細(xì)信息
Object
public Object()
方法詳情
getClass
public final Class> getClass()
返回此 Object 的運行時類。 返回的 Class 對象是被表示類的靜態(tài)同步方法鎖定的對象。
實際結(jié)果類型是Class 擴(kuò)展 |X|> 其中 |X| 是調(diào)用 getClass 的表達(dá)式的靜態(tài)類型的擦除。 例如,在此代碼片段中不需要強(qiáng)制轉(zhuǎn)換:
Number n = 0; Class extends Number> c = n.getClass();
返回:
表示此對象的運行時類的 Class 對象。
hashCode
public int hashCode()
返回對象的哈希碼值。支持這種方法是為了有利于哈希表,例如 HashMap 提供的那些。
hashCode 的一般合約是:
- 每當(dāng)在 Java 應(yīng)用程序執(zhí)行期間對同一對象多次調(diào)用時,hashCode 方法必須始終返回相同的整數(shù),前提是沒有修改對象上相等比較中使用的信息。該整數(shù)不需要從應(yīng)用程序的一次執(zhí)行到同一應(yīng)用程序的另一次執(zhí)行保持一致。
- 如果兩個對象根據(jù) equals(Object) 方法相等,則對兩個對象中的每一個調(diào)用 hashCode 方法必須產(chǎn)生相同的整數(shù)結(jié)果。
- 如果根據(jù) equals(java.lang.Object) 方法,如果兩個對象不相等,則不要求對兩個對象中的每一個調(diào)用 hashCode 方法必須產(chǎn)生不同的整數(shù)結(jié)果。但是,程序員應(yīng)該意識到,為不相等的對象生成不同的整數(shù)結(jié)果可能會提高哈希表的性能。
在合理可行的情況下,由 Object 類定義的 hashCode 方法確實為不同的對象返回不同的整數(shù)。 (這通常通過將對象的內(nèi)部地址轉(zhuǎn)換為整數(shù)來實現(xiàn),但 Java? 編程語言不需要這種實現(xiàn)技術(shù)。)
返回:
此對象的哈希碼值。
equals
public boolean equals(Object obj)
指示其他對象是否“等于”這個對象。
equals 方法在非空對象引用上實現(xiàn)等價關(guān)系:
- 它是 reflexive:對于任何非空引用值 x,x.equals(x) 應(yīng)該返回 true。
- 它是對稱的:對于任何非空引用值 x 和 y,當(dāng)且僅當(dāng) y.equals(x) 返回 true 時,x.equals(y) 才應(yīng)該返回 true。
- 傳遞:對于任何非空引用值 x、y 和 z,如果 x.equals(y) 返回 true 并且 y.equals(z) 返回 true,則 x.equals(z) 應(yīng)該返回 true .
- 它是一致的:對于任何非空引用值 x 和 y,x.equals(y) 的多次調(diào)用始終返回 true 或始終返回 false,前提是沒有修改對象上 equals 比較中使用的信息。
- 對于任何非空引用值 x,x.equals(null) 應(yīng)該返回 false。
Object 類的 equals 方法實現(xiàn)了對象上最有區(qū)別的可能等價關(guān)系;也就是說,對于任何非空引用值 x 和 y,當(dāng)且僅當(dāng) x 和 y 引用同一個對象(x == y 的值為 true)時,此方法才返回 true。
請注意,每當(dāng)重寫該方法時,通常都需要重寫 hashCode 方法,以維護(hù) hashCode 方法的一般約定,即相等的對象必須具有相等的哈希碼。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| obj | 要與之比較的參考對象。 |
返回:
如果此對象與 obj 參數(shù)相同,則為 true; 否則為假。
clone
protected Object clone() throws CloneNotSupportedException
創(chuàng)建并返回此對象的副本。 “復(fù)制”的確切含義可能取決于對象的類別。 一般意圖是,對于任何對象 x,表達(dá)式:
x.clone() != x將會為true,并且表達(dá)式:
x.clone().getClass() == x.getClass()將會為true,但這些不是絕對的要求。 雖然通常是這樣的:
x.clone().equals(x)會是真的,這不是一個絕對的要求。
按照約定,返回的對象應(yīng)該通過調(diào)用 super.clone 來獲取。如果一個類及其所有超類(Object 除外)都遵守這個約定,那么 x.clone().getClass() == x.getClass() 就是這種情況。
按照慣例,此方法返回的對象應(yīng)獨立于此對象(正在克?。?。為了實現(xiàn)這種獨立性,可能需要在返回 super.clone 之前修改對象的一個或多個字段。通常,這意味著復(fù)制任何包含被克隆對象的內(nèi)部“深層結(jié)構(gòu)”的可變對象,并將對這些對象的引用替換為對副本的引用。如果一個類只包含原始字段或?qū)Σ豢勺儗ο蟮囊茫敲赐ǔG闆r下 super.clone 返回的對象中不需要修改任何字段。
類 Object 的方法 clone 執(zhí)行特定的克隆操作。首先,如果該對象的類沒有實現(xiàn)接口 Cloneable,則拋出 CloneNotSupportedException。請注意,所有數(shù)組都被認(rèn)為實現(xiàn)了接口 Cloneable,并且數(shù)組類型 T[] 的克隆方法的返回類型是 T[],其中 T 是任何引用或原始類型。否則,此方法會創(chuàng)建此對象的類的新實例,并使用此對象的相應(yīng)字段的內(nèi)容來初始化其所有字段,就像通過賦值一樣;字段的內(nèi)容本身不會被克隆。因此,此方法執(zhí)行此對象的“淺拷貝”,而不是“深拷貝”操作。
Object 類本身并沒有實現(xiàn)接口 Cloneable,因此在類為 Object 的對象上調(diào)用 clone 方法將導(dǎo)致在運行時拋出異常。
返回:
此實例的克隆。
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| CloneNotSupportedException | 如果對象的類不支持 Cloneable 接口。 覆蓋 clone 方法的子類也可以拋出此異常,表示無法克隆實例。 |
toString
public String toString()
返回對象的字符串表示形式。 通常,toString 方法返回一個“以文本方式表示”該對象的字符串。 結(jié)果應(yīng)該是一個簡潔但信息豐富的表示,易于人們閱讀。 建議所有子類重寫此方法。
Object 類的 toString 方法返回一個字符串,該字符串由對象作為其實例的類的名稱、at 符號字符“@”和對象哈希碼的無符號十六進(jìn)制表示形式組成。 換句話說,此方法返回一個等于以下值的字符串:
getClass().getName() + '@' + Integer.toHexString(hashCode()) 返回:
對象的字符串表示形式。
notify
public final void notify()
喚醒正在此對象的監(jiān)視器上等待的單個線程。如果有任何線程正在等待該對象,則選擇其中一個被喚醒。該選擇是任意的,并由實施自行決定。線程通過調(diào)用其中一個等待方法在對象的監(jiān)視器上等待。
在當(dāng)前線程放棄對該對象的鎖定之前,被喚醒的線程將無法繼續(xù)。被喚醒的線程將以通常的方式與可能正在積極競爭以在此對象上同步的任何其他線程競爭;例如,被喚醒的線程在成為下一個鎖定該對象的線程時不享有可靠的特權(quán)或劣勢。
此方法只能由作為該對象監(jiān)視器所有者的線程調(diào)用。線程通過以下三種方式之一成為對象監(jiān)視器的所有者:
- 通過執(zhí)行該對象的同步實例方法。
- 通過執(zhí)行在對象上同步的同步語句的主體。
- 對于 Class 類型的對象,通過執(zhí)行該類的同步靜態(tài)方法。
一次只有一個線程可以擁有一個對象的監(jiān)視器。
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| IllegalMonitorStateException | 如果當(dāng)前線程不是該對象監(jiān)視器的所有者。 |
notifyAll
public final void notifyAll()
喚醒正在此對象的監(jiān)視器上等待的所有線程。 線程通過調(diào)用其中一個等待方法在對象的監(jiān)視器上等待。
在當(dāng)前線程放棄對該對象的鎖定之前,被喚醒的線程將無法繼續(xù)。 被喚醒的線程將以通常的方式與可能正在積極競爭以在該對象上同步的任何其他線程競爭; 例如,被喚醒的線程在成為下一個鎖定該對象的線程時不享有可靠的特權(quán)或劣勢。
此方法只能由作為該對象監(jiān)視器所有者的線程調(diào)用。
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| IllegalMonitorStateException | 如果當(dāng)前線程不是該對象監(jiān)視器的所有者。 |
wait
public final void wait(long timeout) throws InterruptedException
使當(dāng)前線程等待,直到另一個線程為此對象調(diào)用 notify() 方法或 notifyAll() 方法,或者經(jīng)過了指定的時間量。
當(dāng)前線程必須擁有該對象的監(jiān)視器。
此方法使當(dāng)前線程(稱為 T)將自己置于該對象的等待集中,然后放棄對該對象的所有同步聲明。線程 T 出于線程調(diào)度目的而被禁用并處于休眠狀態(tài),直到發(fā)生以下四種情況之一:
- 某個其他線程調(diào)用了該對象的 notify 方法,而線程 T 恰好被任意選擇為要被喚醒的線程。
- 其他一些線程為此對象調(diào)用 notifyAll 方法。
- 其他一些線程 Thread#interrupt() 線程 T。
- 或多或少已經(jīng)過了指定的實時時間。但是,如果超時為零,則不考慮實時時間,線程只是等待直到收到通知。
然后將線程 T 從該對象的等待集中移除,并重新啟用線程調(diào)度。然后它以通常的方式與其他線程競爭對象同步的權(quán)利;一旦它獲得了對象的控制權(quán),它對對象的所有同步聲明都會恢復(fù)到之前的狀態(tài)——即,恢復(fù)到調(diào)用等待方法時的狀態(tài)。線程 T 然后從調(diào)用等待方法返回。因此,從等待方法返回時,對象和線程 T 的同步狀態(tài)與調(diào)用等待方法時完全相同。
線程也可以在沒有被通知、中斷或超時的情況下喚醒,即所謂的虛假喚醒。雖然這在實踐中很少發(fā)生,但應(yīng)用程序必須通過測試應(yīng)該導(dǎo)致線程被喚醒的條件來防范它,如果條件不滿足則繼續(xù)等待。換句話說,等待應(yīng)該總是在循環(huán)中發(fā)生,就像這樣:
synchronized (obj) {
while ()
obj.wait(timeout);
... // Perform action appropriate to condition
} (有關(guān)此主題的更多信息,請參閱 Doug Lea 的“Java 中的并發(fā)編程(第二版)”(Addison-Wesley,2000)中的第 3.2.3 節(jié),或 Joshua Bloch 的“有效的 Java 編程語言指南”(Addison- 韋斯利,2001)。
如果當(dāng)前線程在等待之前或期間被任何線程中斷,則拋出 InterruptedException。 在此對象的鎖定狀態(tài)已按上述恢復(fù)之前,不會引發(fā)此異常。
請注意,wait 方法將當(dāng)前線程放入該對象的等待集中,僅解鎖該對象; 當(dāng)前線程可能同步的任何其他對象在線程等待時保持鎖定。
此方法只能由作為該對象監(jiān)視器所有者的線程調(diào)用。 有關(guān)線程可以成為監(jiān)視器所有者的方式的描述,請參見 notify 方法。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| timeout | 等待的最長時間(以毫秒為單位)。 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| IllegalArgumentException | 如果 timeout 的值為負(fù)。 |
| IllegalMonitorStateException | 如果當(dāng)前線程不是對象監(jiān)視器的所有者。 |
| InterruptedException | 如果任何線程在當(dāng)前線程等待通知之前或期間中斷了當(dāng)前線程。 拋出此異常時清除當(dāng)前線程的中斷狀態(tài)。 |
wait
public final void wait(long timeout, int nanos) throws InterruptedException
導(dǎo)致當(dāng)前線程等待,直到另一個線程為此對象調(diào)用 notify() 方法或 notifyAll() 方法,或者某個其他線程中斷當(dāng)前線程,或者已經(jīng)過了一定的實時時間。
此方法類似于一個參數(shù)的等待方法,但它允許更好地控制在放棄之前等待通知的時間量。 以納秒為單位測量的實時量由下式給出:
1000000*timeout+nanos在所有其他方面,此方法與一個參數(shù)的方法 wait(long) 執(zhí)行相同的操作。 特別是,wait(0, 0) 與 wait(0) 的含義相同。
當(dāng)前線程必須擁有該對象的監(jiān)視器。 線程釋放此監(jiān)視器的所有權(quán)并等待,直到發(fā)生以下兩種情況之一:
- 另一個線程通過調(diào)用 notify 方法或 notifyAll 方法通知在此對象的監(jiān)視器上等待喚醒的線程。
- 超時時間(由 timeout 毫秒加上 nanos 納秒?yún)?shù)指定)已經(jīng)過去。
然后線程等待直到它可以重新獲得監(jiān)視器的所有權(quán)并恢復(fù)執(zhí)行。
與單參數(shù)版本一樣,中斷和虛假喚醒是可能的,并且應(yīng)該始終在循環(huán)中使用此方法:
synchronized (obj) {
while ()
obj.wait(timeout, nanos);
... // Perform action appropriate to condition
} 此方法只能由作為該對象監(jiān)視器所有者的線程調(diào)用。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| timeout | 等待的最長時間(以毫秒為單位)。 |
| nanos | 附加時間,以納秒為單位,范圍 0-999999。 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| IllegalArgumentException | 如果 timeout 的值為負(fù)或 nanos 的值不在 0-999999 范圍內(nèi)。 |
| IllegalMonitorStateException | 如果當(dāng)前線程不是該對象監(jiān)視器的所有者。 |
| InterruptedException | 如果任何線程在當(dāng)前線程等待通知之前或期間中斷了當(dāng)前線程。 拋出此異常時清除當(dāng)前線程的中斷狀態(tài)。 |
wait
public final void wait() throws InterruptedException
使當(dāng)前線程等待,直到另一個線程為此對象調(diào)用 notify() 方法或 notifyAll() 方法。 換句話說,此方法的行為與它只是執(zhí)行調(diào)用 wait(0) 完全相同。
當(dāng)前線程必須擁有該對象的監(jiān)視器。 線程釋放此監(jiān)視器的所有權(quán)并等待,直到另一個線程通過調(diào)用 notify 方法或 notifyAll 方法通知在此對象的監(jiān)視器上等待的線程喚醒。 然后線程等待直到它可以重新獲得監(jiān)視器的所有權(quán)并恢復(fù)執(zhí)行。
與單參數(shù)版本一樣,中斷和虛假喚醒是可能的,并且應(yīng)該始終在循環(huán)中使用此方法:
synchronized (obj) {
while ()
obj.wait();
... // Perform action appropriate to condition
} 此方法只能由作為該對象監(jiān)視器所有者的線程調(diào)用。
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| IllegalMonitorStateException | 如果當(dāng)前線程不是對象監(jiān)視器的所有者。 |
| InterruptedException | 如果任何線程在當(dāng)前線程等待通知之前或期間中斷了當(dāng)前線程。 拋出此異常時清除當(dāng)前線程的中斷狀態(tài)。 |
finalize
protected void finalize() throws Throwable
當(dāng)垃圾收集確定不再有對該對象的引用時,由對象上的垃圾收集器調(diào)用。子類覆蓋 finalize 方法以釋放系統(tǒng)資源或執(zhí)行其他清理。
finalize 的一般約定是,當(dāng) Java? 虛擬機(jī)確定不再有任何方法可以讓任何尚未終止的線程訪問此對象時調(diào)用它,除非是由于某個操作由準(zhǔn)備完成的其他對象或類的完成所采取。 finalize 方法可以采取任何行動,包括使該對象再次可供其他線程使用;然而,finalize 的通常目的是在對象被不可撤銷地丟棄之前執(zhí)行清理操作。例如,代表輸入/輸出連接的對象的 finalize 方法可能會執(zhí)行顯式 I/O 事務(wù)以在對象被永久丟棄之前中斷連接。
Object 類的 finalize 方法不執(zhí)行任何特殊操作;它只是正常返回。 Object 的子類可以覆蓋這個定義。
Java 編程語言不保證哪個線程將為任何給定對象調(diào)用 finalize 方法。但是,可以保證調(diào)用 finalize 的線程在調(diào)用 finalize 時不會持有任何用戶可見的同步鎖。如果 finalize 方法拋出未捕獲的異常,則忽略該異常并終止該對象的終結(jié)。
在為一個對象調(diào)用 finalize 方法之后,不會采取進(jìn)一步的行動,直到 Java 虛擬機(jī)再次確定沒有任何方法可以讓任何尚未終止的線程訪問該對象,包括可能的行動由其他準(zhǔn)備完成的對象或類,此時該對象可能被丟棄。
對于任何給定的對象,Java 虛擬機(jī)永遠(yuǎn)不會多次調(diào)用 finalize 方法。
finalize 方法拋出的任何異常都會導(dǎo)致該對象的終結(jié)被暫停,否則會被忽略。
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| Throwable | 此方法引發(fā)的異常 |
文章名稱:創(chuàng)新互聯(lián)鴻蒙OS教程:鴻蒙OSObject
分享鏈接:http://www.dlmjj.cn/article/dhghies.html


咨詢
建站咨詢
