新聞中心
Object

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


咨詢
建站咨詢
