<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 55,comments - 89,trackbacks - 0
        類Object是類層次結(jié)構(gòu)的根類,每一個(gè)類都使用Object作為超類,所有對(duì)象(包括數(shù)組)都實(shí)現(xiàn)這個(gè)類的方法。jdk1.5中,描述了該類中的11個(gè)方法

    1.getClass

    public final Class<? extends Object> getClass()
    返回一個(gè)對(duì)象的運(yùn)行時(shí)類。該 Class 對(duì)象是由所表示類的 static synchronized 方法鎖定的對(duì)象。

     

    返回:
    表示該對(duì)象的運(yùn)行時(shí)類的 java.lang.Class 對(duì)象。此結(jié)果屬于類型 Class<? extends X>,其中 X 表示清除表達(dá)式中的靜態(tài)類型,該表達(dá)式調(diào)用 getClass

    2.hashCode

    public int hashCode()
    返回該對(duì)象的哈希碼值。支持該方法是為哈希表提供一些優(yōu)點(diǎn),例如,java.util.Hashtable 提供的哈希表。

    hashCode 的常規(guī)協(xié)定是:

    • 在 Java 應(yīng)用程序執(zhí)行期間,在同一對(duì)象上多次調(diào)用 hashCode 方法時(shí),必須一致地返回相同的整數(shù),前提是對(duì)象上 equals 比較中所用的信息沒(méi)有被修改。從某一應(yīng)用程序的一次執(zhí)行到同一應(yīng)用程序的另一次執(zhí)行,該整數(shù)無(wú)需保持一致。
    • 如果根據(jù) equals(Object) 方法,兩個(gè)對(duì)象是相等的,那么在兩個(gè)對(duì)象中的每個(gè)對(duì)象上調(diào)用 hashCode 方法都必須生成相同的整數(shù)結(jié)果。
    • 以下情況 是必需的:如果根據(jù) equals(java.lang.Object) 方法,兩個(gè)對(duì)象不相等,那么在兩個(gè)對(duì)象中的任一對(duì)象上調(diào)用 hashCode 方法必定會(huì)生成不同的整數(shù)結(jié)果。但是,程序員應(yīng)該知道,為不相等的對(duì)象生成不同整數(shù)結(jié)果可以提高哈希表的性能。

    實(shí)際上,由 Object 類定義的 hashCode 方法確實(shí)會(huì)針對(duì)不同的對(duì)象返回不同的整數(shù)。(這一般是通過(guò)將該對(duì)象的內(nèi)部地址轉(zhuǎn)換成一個(gè)整數(shù)來(lái)實(shí)現(xiàn)的,但是 JavaTM 編程語(yǔ)言不需要這種實(shí)現(xiàn)技巧。)

     

    返回:
    此對(duì)象的一個(gè)哈希碼值。

    3.equals

    public boolean equals(Object obj)
    指示某個(gè)其他對(duì)象是否與此對(duì)象“相等”。

    equals 方法在非空對(duì)象引用上實(shí)現(xiàn)相等關(guān)系:

    • 自反性:對(duì)于任何非空引用值 xx.equals(x) 都應(yīng)返回 true
    • 對(duì)稱性:對(duì)于任何非空引用值 xy,當(dāng)且僅當(dāng) y.equals(x) 返回 true 時(shí),x.equals(y) 才應(yīng)返回 true
    • 傳遞性:對(duì)于任何非空引用值 xyz,如果 x.equals(y) 返回 true,并且 y.equals(z) 返回 true,那么 x.equals(z) 應(yīng)返回 true
    • 一致性:對(duì)于任何非空引用值 xy,多次調(diào)用 x.equals(y) 始終返回 true 或始終返回 false,前提是對(duì)象上 equals 比較中所用的信息沒(méi)有被修改。
    • 對(duì)于任何非空引用值 xx.equals(null) 都應(yīng)返回 false

    Object 類的 equals 方法實(shí)現(xiàn)對(duì)象上差別可能性最大的相等關(guān)系;即,對(duì)于任何非空引用值 xy,當(dāng)且僅當(dāng) xy 引用同一個(gè)對(duì)象時(shí),此方法才返回 truex == y 具有值 true)。

    注意:當(dāng)此方法被重寫(xiě)時(shí),通常有必要重寫(xiě) hashCode 方法,以維護(hù) hashCode 方法的常規(guī)協(xié)定,該協(xié)定聲明相等對(duì)象必須具有相等的哈希碼。

     

    參數(shù):
    obj - 要與之比較的引用對(duì)象。
    返回:
    如果此對(duì)象與 obj 參數(shù)相同,則返回 true;否則返回 false

    4.clone

    protected Object clone()
    throws CloneNotSupportedException
    創(chuàng)建并返回此對(duì)象的一個(gè)副本。“副本”的準(zhǔn)確含義可能依賴于對(duì)象的類。一般來(lái)說(shuō),對(duì)于任何對(duì)象 x,如果表達(dá)式:
    x.clone() != x
    是正確的,則表達(dá)式:
    x.clone().getClass() == x.getClass()
    將為 true,但這些不是絕對(duì)條件。一般情況下是:
    x.clone().equals(x)
    將為 true,但這不是絕對(duì)條件。

    按照慣例,返回的對(duì)象應(yīng)該通過(guò)調(diào)用 super.clone 獲得。如果一個(gè)類及其所有的超類(Object 除外)都遵守此約定,則 x.clone().getClass() == x.getClass()

    按照慣例,此方法返回的對(duì)象應(yīng)該獨(dú)立于該對(duì)象(正被克隆的對(duì)象)。要獲得此獨(dú)立性,在 super.clone 返回對(duì)象之前,有必要對(duì)該對(duì)象的一個(gè)或多個(gè)字段進(jìn)行修改。這通常意味著要復(fù)制包含正在被克隆對(duì)象的內(nèi)部“深層結(jié)構(gòu)”的所有可變對(duì)象,并使用對(duì)副本的引用替換對(duì)這些對(duì)象的引用。如果一個(gè)類只包含基本字段或?qū)Σ蛔儗?duì)象的引用,那么通常不需要修改 super.clone 返回的對(duì)象中的字段。

    Object 類的 clone 方法執(zhí)行特定的克隆操作。首先,如果此對(duì)象的類不能實(shí)現(xiàn)接口 Cloneable,則會(huì)拋出 CloneNotSupportedException。注意:所有的數(shù)組都被視為實(shí)現(xiàn)接口 Cloneable。否則,此方法會(huì)創(chuàng)建此對(duì)象的類的一個(gè)新實(shí)例,并像通過(guò)分配那樣,嚴(yán)格使用此對(duì)象相應(yīng)字段的內(nèi)容初始化該對(duì)象的所有字段;這些字段的內(nèi)容沒(méi)有被自我克隆。所以,此方法執(zhí)行的是該對(duì)象的“淺表復(fù)制”,而不“深層復(fù)制”操作。

    Object 類本身不實(shí)現(xiàn)接口 Cloneable,所以在類為 Object 的對(duì)象上調(diào)用 clone 方法將會(huì)導(dǎo)致在運(yùn)行時(shí)拋出異常。

     

    返回:
    此實(shí)例的一個(gè)克隆。
    拋出:
    CloneNotSupportedException - 如果對(duì)象的類不支持 Cloneable 接口,則重寫(xiě) clone 方法的子類也會(huì)拋出此異常,以指示無(wú)法克隆某個(gè)實(shí)例。

    5.toString

    public String toString()
    返回該對(duì)象的字符串表示。通常,toString 方法會(huì)返回一個(gè)“以文本方式表示”此對(duì)象的字符串。結(jié)果應(yīng)是一個(gè)簡(jiǎn)明但易于讀懂。建議所有子類都重寫(xiě)此方法。

    Object 類的 toString 方法返回一個(gè)字符串,該字符串由類名(對(duì)象是該類的一個(gè)實(shí)例)、at 標(biāo)記符“@”和此對(duì)象哈希碼的無(wú)符號(hào)十六進(jìn)制表示組成。換句話說(shuō),該方法返回一個(gè)字符串,它的值等于:

    getClass().getName() + '@' + Integer.toHexString(hashCode())
    

     

    返回:
    該對(duì)象的字符串表示形式。

    6.notify

    public final void notify()
    喚醒在此對(duì)象監(jiān)視器上等待的單個(gè)線程。如果所有線程都在此對(duì)象上等待,則會(huì)選擇喚醒其中一個(gè)線程。選擇是任意性的,并在對(duì)實(shí)現(xiàn)做出決定時(shí)發(fā)生。線程通過(guò)調(diào)用其中一個(gè) wait 方法,在對(duì)象的監(jiān)視器上等待。

    直到當(dāng)前的線程放棄此對(duì)象上的鎖定,才能繼續(xù)執(zhí)行被喚醒的線程。被喚醒的線程將以常規(guī)方式與在該對(duì)象上主動(dòng)同步的其他所有線程進(jìn)行競(jìng)爭(zhēng);例如,喚醒的線程在作為鎖定此對(duì)象的下一個(gè)線程方面沒(méi)有可靠的特權(quán)或劣勢(shì)。

    此方法只應(yīng)由作為此對(duì)象監(jiān)視器的所有者的線程來(lái)調(diào)用。通過(guò)以下三種方法之一,線程可以成為此對(duì)象監(jiān)視器的所有者:

    • 通過(guò)執(zhí)行此對(duì)象的同步 (Sychronized) 實(shí)例方法。
    • 通過(guò)執(zhí)行在此對(duì)象上進(jìn)行同步的 synchronized 語(yǔ)句的正文。
    • 對(duì)于 Class 類型的對(duì)象,可以通過(guò)執(zhí)行該類的同步靜態(tài)方法。

    一次只能有一個(gè)線程擁有對(duì)象的監(jiān)視器。

     

    拋出:
    IllegalMonitorStateException - 如果當(dāng)前的線程不是此對(duì)象監(jiān)視器的所有者。

    7.notifyAll

    public final void notifyAll()
    喚醒在此對(duì)象監(jiān)視器上等待的所有線程。線程通過(guò)調(diào)用其中一個(gè) wait 方法,在對(duì)象的監(jiān)視器上等待。

    直到當(dāng)前的線程放棄此對(duì)象上的鎖定,才能繼續(xù)執(zhí)行被喚醒的線程。被喚醒的線程將以常規(guī)方式與在該對(duì)象上主動(dòng)同步的其他所有線程進(jìn)行競(jìng)爭(zhēng);例如,喚醒的線程在作為鎖定此對(duì)象的下一個(gè)線程方面沒(méi)有可靠的特權(quán)或劣勢(shì)。

    此方法只應(yīng)由作為此對(duì)象監(jiān)視器的所有者的線程來(lái)調(diào)用。請(qǐng)參閱 notify 方法,了解線程能夠成為監(jiān)視器所有者的方法的描述。

     

    拋出:
    IllegalMonitorStateException - 如果當(dāng)前的線程不是此對(duì)象監(jiān)視器的所有者。

    8.finalize

    protected void finalize()
    throws Throwable
    當(dāng)垃圾回收器確定不存在對(duì)該對(duì)象的更多引用時(shí),由對(duì)象的垃圾回收器調(diào)用此方法。子類重寫(xiě) finalize 方法,以配置系統(tǒng)資源或執(zhí)行其他清除。

    finalize 的常規(guī)協(xié)定是:當(dāng) JavaTM 虛擬機(jī)已確定尚未終止的任何線程無(wú)法再通過(guò)任何方法訪問(wèn)此對(duì)象時(shí),將調(diào)用此方法,除非由于準(zhǔn)備終止的其他某個(gè)對(duì)象或類的終結(jié)操作執(zhí)行了某個(gè)操作。finalize 方法可以采取任何操作,其中包括再次使此對(duì)象對(duì)其他線程可用;不過(guò),finalize 的主要目的是在不可撤消地丟棄對(duì)象之前執(zhí)行清除操作。例如,表示輸入/輸出連接的對(duì)象的 finalize 方法可執(zhí)行顯式 I/O 事務(wù),以便在永久丟棄對(duì)象之前中斷連接。

    Object 類的 finalize 方法執(zhí)行非特殊性操作;它僅執(zhí)行一些常規(guī)返回。Object 的子類可以重寫(xiě)此定義。

    Java 編程語(yǔ)言不保證哪個(gè)線程將調(diào)用某個(gè)給定對(duì)象的 finalize 方法。但可以保證在調(diào)用 finalize 時(shí),調(diào)用 finalize 的線程將不會(huì)持有任何用戶可見(jiàn)的同步鎖定。如果 finalize 方法拋出未捕獲的異常,那么該異常將被忽略,并且該對(duì)象的終結(jié)操作將終止。

    在啟用某個(gè)對(duì)象的 finalize 方法后,將不會(huì)執(zhí)行進(jìn)一步操作,直到 Java 虛擬機(jī)再次確定尚未終止的任何線程無(wú)法再通過(guò)任何方法訪問(wèn)此對(duì)象,其中包括由準(zhǔn)備終止的其他對(duì)象或類執(zhí)行的可能操作,在執(zhí)行該操作時(shí),對(duì)象可能被丟棄。

    對(duì)于任何給定對(duì)象,Java 虛擬機(jī)最多只調(diào)用一次 finalize 方法。

    finalize 方法拋出的任何異常都會(huì)導(dǎo)致此對(duì)象的終結(jié)操作停止,但可以通過(guò)其他方法忽略它。

     

    拋出:
    Throwable - 此方法拋出的 Exception

    9.wait

    public final void wait(long timeout)
    throws InterruptedException
    導(dǎo)致當(dāng)前的線程等待,直到其他線程調(diào)用此對(duì)象的 notify() 方法或 notifyAll() 方法,或者超過(guò)指定的時(shí)間量。

    當(dāng)前的線程必須擁有此對(duì)象監(jiān)視器。

    此方法導(dǎo)致當(dāng)前線程(稱之為 T)將其自身放置在對(duì)象的等待集中,然后放棄此對(duì)象上的所有同步要求。出于線程調(diào)度目的,線程 T 被禁用,且處于休眠狀態(tài),直到發(fā)生以下四種情況之一:

    • 其他某個(gè)線程調(diào)用此對(duì)象的 notify 方法,并且線程 T 碰巧被任選為被喚醒的線程。
    • 其他某個(gè)線程調(diào)用此對(duì)象的 notifyAll 方法。
    • 其他某個(gè)線程中斷線程 T
    • 已經(jīng)到達(dá)指定的實(shí)際時(shí)間。但是,如果 timeout 為零,則不考慮實(shí)際時(shí)間,該線程將一直等待,直到獲得通知。
    然后,從對(duì)象的等待集中刪除線程 T,并重新進(jìn)行線程調(diào)度。然后,該線程以常規(guī)方式與其他線程競(jìng)爭(zhēng),以獲得在該對(duì)象上同步的權(quán)利;一旦獲得對(duì)該對(duì)象的控制權(quán),該對(duì)象上的所有其同步聲明都將被還原到以前的狀態(tài) - 這就是調(diào)用 wait 方法時(shí)的情況。然后,線程 Twait 方法的調(diào)用中返回。所以,從 wait 方法返回時(shí),該對(duì)象和線程 T 的同步狀態(tài)與調(diào)用 wait 方法時(shí)的情況完全相同。

    在沒(méi)有被通知、中斷或超時(shí)的情況下,線程還可以喚醒一個(gè)所謂的虛假喚醒 (spurious wakeup)。雖然這種情況在實(shí)踐中很少發(fā)生,但是應(yīng)用程序必須通過(guò)以下方式防止其發(fā)生,即對(duì)應(yīng)該導(dǎo)致該線程被提醒的條件進(jìn)行測(cè)試,如果不滿足該條件,則繼續(xù)等待。換句話說(shuō),等待應(yīng)總是發(fā)生在循環(huán)中,如下面的示例:

    synchronized (obj) {
    while (<condition does not hold>)
    obj.wait(timeout);
    ... // Perform action appropriate to condition
    }
    
    (有關(guān)這一主題的更多信息,請(qǐng)參閱 Doug Lea 撰寫(xiě)的《Concurrent Programming in Java (Second Edition)》(Addison-Wesley, 2000) 中的第 3.2.3 節(jié)或 Joshua Bloch 撰寫(xiě)的《Effective Java Programming Language Guide》(Addison-Wesley, 2001) 中的第 50 項(xiàng)。

    如果當(dāng)前線程在等待時(shí)被其他線程中斷,則會(huì)拋出 InterruptedException。在按上述形式恢復(fù)此對(duì)象的鎖定狀態(tài)時(shí)才會(huì)拋出此異常。

    注意,由于 wait 方法將當(dāng)前的線程放入了對(duì)象的等待集中,所以它只能解除此對(duì)象的鎖定;可以同步當(dāng)前線程的任何其他對(duì)象在線程等待時(shí)仍處于鎖定狀態(tài)。

    此方法只應(yīng)由作為此對(duì)象監(jiān)視器的所有者的線程來(lái)調(diào)用。請(qǐng)參閱 notify 方法,了解線程能夠成為監(jiān)視器所有者的方法的描述。

     

    參數(shù):
    timeout - 要等待的最長(zhǎng)時(shí)間(以毫秒為單位)。
    拋出:
    IllegalArgumentException - 如果超時(shí)值為負(fù)。
    IllegalMonitorStateException - 如果當(dāng)前的線程不是此對(duì)象監(jiān)視器的所有者。
    InterruptedException - 如果在當(dāng)前線程等待通知之前或者正在等待通知時(shí),另一個(gè)線程中斷了當(dāng)前線程。在拋出此異常時(shí),當(dāng)前線程的中斷狀態(tài) 被清除。

    10.wait

    public final void wait(long timeout,
    int nanos)
    throws InterruptedException
    導(dǎo)致當(dāng)前的線程等待,直到其他線程調(diào)用此對(duì)象的 notify() 方法或 notifyAll() 方法,或者其他某個(gè)線程中斷當(dāng)前線程,或者已超過(guò)某個(gè)實(shí)際時(shí)間量。

    此方法類似于一個(gè)參數(shù)的 wait 方法,但它允許更好地控制在放棄之前等待通知的時(shí)間量。用毫微秒度量的實(shí)際時(shí)間量可以通過(guò)以下公式計(jì)算出來(lái):

    1000000*timeout+nanos

    在其他所有方面,此方法執(zhí)行的操作與帶有一個(gè)參數(shù)的 wait(long) 方法相同。需要特別指出的是,wait(0, 0)wait(0) 相同。

    當(dāng)前的線程必須擁有此對(duì)象監(jiān)視器。該線程發(fā)布對(duì)此監(jiān)視器的所有權(quán),并等待下面兩個(gè)條件之一發(fā)生:

    • 其他線程通過(guò)調(diào)用 notify 方法,或 notifyAll 方法通知在此對(duì)象的監(jiān)視器上等待的線程醒來(lái)。
    • timeout 毫秒值與 nanos 毫微秒?yún)?shù)值之和指定的超時(shí)時(shí)間已用完。

    然后,該線程等到重新獲得對(duì)監(jiān)視器的所有權(quán)后才能繼續(xù)執(zhí)行。

    對(duì)于某一個(gè)參數(shù)的版本,實(shí)現(xiàn)中斷和虛假喚醒是有可能的,并且此方法應(yīng)始終在循環(huán)中使用:

    synchronized (obj) {
    while (<condition does not hold>)
    obj.wait(timeout, nanos);
    ... // Perform action appropriate to condition
    }
    
    此方法只應(yīng)由作為此對(duì)象監(jiān)視器的所有者的線程來(lái)調(diào)用。請(qǐng)參閱 notify 方法,了解線程能夠成為監(jiān)視器所有者的方法的描述。

     

    參數(shù):
    timeout - 要等待的最長(zhǎng)時(shí)間(以毫秒為單位)。
    nanos - 額外時(shí)間(以毫微秒為單位,范圍是 0-999999)。
    拋出:
    IllegalArgumentException - 如果超時(shí)值是負(fù)數(shù),或者毫微秒值不在 0-999999 范圍內(nèi)。
    IllegalMonitorStateException - 如果當(dāng)前線程不是此對(duì)象監(jiān)視器的所有者。
    InterruptedException - 如果在當(dāng)前線程等待通知之前或者正在等待通知時(shí),其他線程中斷了當(dāng)前線程。在拋出此異常時(shí),當(dāng)前線程的中斷狀態(tài) 被清除。

    11.wait

    public final void wait()
    throws InterruptedException
    導(dǎo)致當(dāng)前的線程等待,直到其他線程調(diào)用此對(duì)象的 notify() 方法或 notifyAll() 方法。換句話說(shuō),此方法的行為就好像它僅執(zhí)行 wait(0) 調(diào)用一樣。

    當(dāng)前的線程必須擁有此對(duì)象監(jiān)視器。該線程發(fā)布對(duì)此監(jiān)視器的所有權(quán)并等待,直到其他線程通過(guò)調(diào)用 notify 方法,或 notifyAll 方法通知在此對(duì)象的監(jiān)視器上等待的線程醒來(lái)。然后該線程將等到重新獲得對(duì)監(jiān)視器的所有權(quán)后才能繼續(xù)執(zhí)行。

    對(duì)于某一個(gè)參數(shù)的版本,實(shí)現(xiàn)中斷和虛假喚醒是可能的,而且此方法應(yīng)始終在循環(huán)中使用:

    synchronized (obj) {
    while (<condition does not hold>)
    obj.wait();
    ... // Perform action appropriate to condition
    }
    
    此方法只應(yīng)由作為此對(duì)象監(jiān)視器的所有者的線程來(lái)調(diào)用。請(qǐng)參閱 notify 方法,了解線程能夠成為監(jiān)視器所有者的方法的描述。

     

    拋出:
    IllegalMonitorStateException - 如果當(dāng)前的線程不是此對(duì)象監(jiān)視器的所有者。
    InterruptedException - 如果在當(dāng)前線程等待通知之前或者正在等待通知時(shí),另一個(gè)線程中斷了當(dāng)前線程。在拋出此異常時(shí),當(dāng)前線程的中斷狀態(tài) 被清除。
    posted on 2008-12-05 10:25 jiafang83 閱讀(8166) 評(píng)論(0)  編輯  收藏

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲bt加勒比一区二区| 亚洲人成色777777精品| 国产免费久久精品99re丫y| 亚洲国产精品久久久久秋霞小| 国产男女猛烈无遮挡免费视频| 拍拍拍无挡视频免费观看1000| 亚洲youjizz| 亚洲精品亚洲人成在线观看| 四虎1515hh永久久免费| 九九久久精品国产免费看小说| 亚洲第一精品福利| 亚洲?v女人的天堂在线观看| 久久免费的精品国产V∧| 国产亚洲蜜芽精品久久| 4444亚洲国产成人精品| 亚洲国产天堂久久综合| 中文字幕无码视频手机免费看| free哆拍拍免费永久视频 | 亚洲成a人片77777老司机| 最近中文字幕免费mv视频7| 免费无码H肉动漫在线观看麻豆| 日本亚洲免费无线码 | 国产啪精品视频网站免费尤物| 亚洲一区二区观看播放| 亚洲av鲁丝一区二区三区| 免费看国产一级特黄aa大片| 182tv免费观看在线视频| 精品久久久久久无码免费| 欧洲亚洲国产精华液| 亚洲一级免费毛片| 亚洲国产精品自在在线观看| 亚洲精品视频在线观看你懂的| 91香蕉视频免费| 在线a免费观看最新网站| 中文在线观看免费网站| 香蕉97碰碰视频免费| 亚洲码和欧洲码一码二码三码| 综合自拍亚洲综合图不卡区| 亚洲av无码片在线播放| 亚洲午夜国产精品无码老牛影视 | 99久久综合国产精品免费|