java.lang
類 Object
java.lang.Object
public class Object
- 從以下版本開始:
- JDK1.0
- 另請參見:
Class
構造方法摘要 | |
---|---|
Object() |
方法摘要 | |
---|---|
protected Object |
clone() 創建並返回此對象的一個副本。 |
boolean |
equals(Object obj) 指示某個其他對象是否與此對象“相等”。 |
protected void |
finalize() 當垃圾回收器確定不存在對該對象的更多引用時,由對象的垃圾回收器調用此方法。 |
Class<?
extendsObject> |
getClass() 返回一個對象的運行時類。 |
int |
hashCode() 返回該對象的哈希碼值。 |
void |
notify() 喚醒在此對象監視器上等待的單個線程。 |
void |
notifyAll() 喚醒在此對象監視器上等待的所有線程。 |
String |
toString() 返回該對象的字符串表示。 |
void |
wait() 導致當前的線程等待,直到其他線程調用此對象的 notify() 方法或 notifyAll() 方法。 |
void |
wait(long timeout) 導致當前的線程等待,直到其他線程調用此對象的 notify() 方法或 notifyAll() 方法,或者超過指定的時間量。 |
void |
wait(long timeout,
int nanos) 導致當前的線程等待,直到其他線程調用此對象的 notify() 方法或 notifyAll() 方法,或者其他某個線程中斷當前線程,或者已超過某個實際時間量。 |
構造方法詳細信息 |
---|
Object
public Object()
方法詳細信息 |
---|
getClass
public final Class<? extends Object> getClass()
- 返回一個對象的運行時類。該 Class 對象是由所表示類的 static synchronized 方法鎖定的對象。
-
- 返回:
- 表示該對象的運行時類的
java.lang.Class
對象。此結果屬於類型Class<? extends X>
,其中 X 表示清除表達式中的靜態類型,該表達式調用getClass
。
hashCode
public int hashCode()
- 返回該對象的哈希碼值。支持該方法是爲哈希表提供一些優點,例如,
java.util.Hashtable
提供的哈希表。- 在 Java 應用程序執行期間,在同一對象上多次調用 hashCode 方法時,必須一致地返回相同的整數,前提是對象上 equals 比較中所用的信息沒有被修改。從某一應用程序的一次執行到同一應用程序的另一次執行,該整數無需保持一致。
- 如果根據 equals(Object) 方法,兩個對象是相等的,那麼在兩個對象中的每個對象上調用
hashCode
方法都必須生成相同的整數結果。 - 以下情況不 是必需的:如果根據
equals(java.lang.Object)
方法,兩個對象不相等,那麼在兩個對象中的任一對象上調用 hashCode 方法必定會生成不同的整數結果。但是,程序員應該知道,爲不相等的對象生成不同整數結果可以提高哈希表的性能。
-
- 返回:
- 此對象的一個哈希碼值。
- 另請參見:
equals(java.lang.Object)
,Hashtable
equals
public boolean equals(Object obj)
- 指示某個其他對象是否與此對象“相等”。
- 自反性:對於任何非空引用值
x
,x.equals(x)
都應返回true
。 - 對稱性:對於任何非空引用值
x
和y
,當且僅當y.equals(x)
返回true
時,x.equals(y)
才應返回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
。
- 自反性:對於任何非空引用值
-
- 參數:
obj
- 要與之比較的引用對象。- 返回:
- 如果此對象與 obj 參數相同,則返回
true
;否則返回false
。 - 另請參見:
hashCode()
,Hashtable
clone
protected Object clone() throws CloneNotSupportedException
- 創建並返回此對象的一個副本。“副本”的準確含義可能依賴於對象的類。一般來說,對於任何對象 x,如果表達式:
x.clone() != x
x.clone().getClass() == x.getClass()
x.clone().equals(x)
-
- 返回:
- 此實例的一個克隆。
- 拋出:
CloneNotSupportedException
- 如果對象的類不支持Cloneable
接口,則重寫clone
方法的子類也會拋出此異常,以指示無法克隆某個實例。- 另請參見:
Cloneable
toString
public String toString()
- 返回該對象的字符串表示。通常,
toString
方法會返回一個“以文本方式表示”此對象的字符串。結果應是一個簡明但易於讀懂。建議所有子類都重寫此方法。getClass().getName() + '@' + Integer.toHexString(hashCode())
-
- 返回:
- 該對象的字符串表示形式。
notify
public final void notify()
- 喚醒在此對象監視器上等待的單個線程。如果所有線程都在此對象上等待,則會選擇喚醒其中一個線程。選擇是任意性的,並在對實現做出決定時發生。線程通過調用其中一個
wait
方法,在對象的監視器上等待。- 通過執行此對象的同步 (Sychronized) 實例方法。
- 通過執行在此對象上進行同步的
synchronized
語句的正文。 - 對於
Class
類型的對象,可以通過執行該類的同步靜態方法。
-
- 拋出:
IllegalMonitorStateException
- 如果當前的線程不是此對象監視器的所有者。- 另請參見:
notifyAll()
,wait()
notifyAll
public final void notifyAll()
- 喚醒在此對象監視器上等待的所有線程。線程通過調用其中一個
wait
方法,在對象的監視器上等待。 -
- 拋出:
IllegalMonitorStateException
- 如果當前的線程不是此對象監視器的所有者。- 另請參見:
notify()
,wait()
wait
public final void wait(long timeout) throws InterruptedException
- 導致當前的線程等待,直到其他線程調用此對象的
notify()
方法或notifyAll()
方法,或者超過指定的時間量。- 其他某個線程調用此對象的 notify 方法,並且線程 T 碰巧被任選爲被喚醒的線程。
- 其他某個線程調用此對象的 notifyAll 方法。
- 其他某個線程
中斷
線程 T。 - 已經到達指定的實際時間。但是,如果 timeout 爲零,則不考慮實際時間,該線程將一直等待,直到獲得通知。
synchronized (obj) { while (<condition does not hold>) obj.wait(timeout); ... // Perform action appropriate to condition }
(有關這一主題的更多信息,請參閱 Doug Lea 撰寫的《Concurrent Programming in Java (Second Edition)》(Addison-Wesley, 2000) 中的第 3.2.3 節或 Joshua Bloch 撰寫的《Effective Java Programming Language Guide》(Addison-Wesley, 2001) 中的第 50 項。 -
- 參數:
timeout
- 要等待的最長時間(以毫秒爲單位)。- 拋出:
IllegalArgumentException
- 如果超時值爲負。IllegalMonitorStateException
- 如果當前的線程不是此對象監視器的所有者。InterruptedException
- 如果在當前線程等待通知之前或者正在等待通知時,另一個線程中斷了當前線程。在拋出此異常時,當前線程的中斷狀態 被清除。- 另請參見:
notify()
,notifyAll()
wait
public final void wait(long timeout, int nanos) throws InterruptedException
- 導致當前的線程等待,直到其他線程調用此對象的
notify()
方法或notifyAll()
方法,或者其他某個線程中斷當前線程,或者已超過某個實際時間量。1000000*timeout+nanos
- 其他線程通過調用
notify
方法,或notifyAll
方法通知在此對象的監視器上等待的線程醒來。 timeout
毫秒值與nanos
毫微秒參數值之和指定的超時時間已用完。
synchronized (obj) { while (<condition does not hold>) obj.wait(timeout, nanos); ... // Perform action appropriate to condition }
此方法只應由作爲此對象監視器的所有者的線程來調用。請參閱notify
方法,瞭解線程能夠成爲監視器所有者的方法的描述。 - 其他線程通過調用
-
- 參數:
timeout
- 要等待的最長時間(以毫秒爲單位)。nanos
- 額外時間(以毫微秒爲單位,範圍是 0-999999)。- 拋出:
IllegalArgumentException
- 如果超時值是負數,或者毫微秒值不在 0-999999 範圍內。IllegalMonitorStateException
- 如果當前線程不是此對象監視器的所有者。InterruptedException
- 如果在當前線程等待通知之前或者正在等待通知時,其他線程中斷了當前線程。在拋出此異常時,當前線程的中斷狀態 被清除。
wait
public final void wait() throws InterruptedException
- 導致當前的線程等待,直到其他線程調用此對象的
notify()
方法或notifyAll()
方法。換句話說,此方法的行爲就好像它僅執行 wait(0) 調用一樣。synchronized (obj) { while (<condition does not hold>) obj.wait(); ... // Perform action appropriate to condition }
此方法只應由作爲此對象監視器的所有者的線程來調用。請參閱notify
方法,瞭解線程能夠成爲監視器所有者的方法的描述。 -
- 拋出:
IllegalMonitorStateException
- 如果當前的線程不是此對象監視器的所有者。InterruptedException
- 如果在當前線程等待通知之前或者正在等待通知時,另一個線程中斷了當前線程。在拋出此異常時,當前線程的中斷狀態 被清除。- 另請參見:
notify()
,notifyAll()
finalize
protected void finalize() throws Throwable
- 當垃圾回收器確定不存在對該對象的更多引用時,由對象的垃圾回收器調用此方法。子類重寫
finalize
方法,以配置系統資源或執行其他清除。 -
- 拋出:
Throwable
- 此方法拋出的Exception