Java Object類

來源:互聯網
上載者:User

標籤:java   object   

一、概述
      Object類是所有Java類的祖先。每個類都使用 Object 作為超類。所有對象(包括數組)都實現這個類的方法。在不明確給出超類的情況下,Java會自動把Object作為要定義類的超類。可以使用類型為Object的變數指向任意類型的對象。Object類有一個預設構造方法pubilc Object(),在構造子類執行個體時,都會先調用這個預設構造方法。
      Object類的變數只能用作各種值的通用持有人。要對他們進行任何專門的操作,都需要知道它們的原始類型並進行類型轉換。例如:
      Object obj = new MyObject();

      MyObject x = (MyObject)obj; 


二、API預覽
    Object()
    預設構造方法
    clone() 
    建立並返回此對象的一個副本。 
    equals(Object obj) 
    指示某個其他對象是否與此對象“相等”。 
    finalize() 
    當記憶體回收行程確定不存在對該對象的更多引用時,由對象的記憶體回收行程調用此方法。 
    getClass() 
    返回一個對象的運行時類。 
    hashCode() 
    返回該對象的雜湊碼值。 
    notify() 
    喚醒在此對象監視器上等待的單個線程。 
    notifyAll() 
    喚醒在此對象監視器上等待的所有線程。 
    toString() 
    返回該對象的字串表示。 
    wait() 
    導致當前的線程等待,直到其他線程調用此對象的 notify() 方法或 notifyAll() 方法。 
    wait(long timeout) 
    導致當前的線程等待,直到其他線程調用此對象的 notify() 方法或 notifyAll() 方法,或者超過指定的時間量。 
    wait(long timeout, int nanos) 

    導致當前的線程等待,直到其他線程調用此對象的 notify() 方法或 notifyAll() 方法,或者其他某個線程中斷當前線程,或者已超過某個實際時間量。 


三、方法使用說明

      equals()方法:用於測試某個對象是否同另一個對象相等。它在Object類中的實現是判斷兩個對象是否指向同一塊記憶體地區。這中測試用處不大,因為即使內容相同的對象,記憶體地區也是不同的。如果想測試對象是否相等,就需要覆蓋此方法,進行更有意義的比較。例如

class Employee{    public boolean equals(Object otherObj){        //快速測試是否是同一個對象        if(this == otherObj) return true;        //如果顯式參數為null,必須返回false        if(otherObj == null) reutrn false;        //如果類不匹配,就不可能相等        if(getClass() != otherObj.getClass()) return false;                //現在已經知道otherObj是個非空的Employee對象        Employee other = (Employee)otherObj;        //測試所有的欄位是否相等        return name.equals(other.name)            && salary == other.salary            && hireDay.equals(other.hireDay);    }}

      Java語言規範要求equals方法具有下面的特點:
      自反性:對於任何非Null 參考值 x,x.equals(x) 都應返回 true。 
      對稱性:對於任何非Null 參考值 x 和 y,若且唯若 y.equals(x) 返回 true 時,x.equals(y) 才應返回 true。 
      傳遞性:對於任何非Null 參考值 x、y 和 z,如果 x.equals(y) 返回 true,並且 y.equals(z) 返回 true,那麼 x.equals(z) 應返回 true。 
      一致性:對於任何非Null 參考值 x 和 y,多次調用 x.equals(y) 始終返回 true 或始終返回 false,前提是對象上 equals 比較中所用的資訊沒有被修改。 
      對於任何非Null 參考值 x,x.equals(null) 都應返回 false。
      從這裡看出,上面的例子是Java規範的equals方法的標準實現,推薦用上面例子的寫法實作類別的equals方法。
 

      toString():返回該對象的字串表示。Object類中的toString()方法會列印出類名和對象的記憶體位置。幾乎每個類都會覆蓋該方法,以便列印對該對象目前狀態的表示。大多數(非全部)toString()方法都遵循如下格式:類名[欄位名=值,欄位名=值...],當然,子類應該定義自己的toString()方法。例如:

public String toString(){    reurn "Employee[name=" + name + ",salary=" + salary + ",hireDay=" + hireDay + "]";}

       toString()方法是非常重要的調試工具,很多標準類庫中的類都定義了toString()方法,以便程式員獲得有用的調試資訊。

Java Object類

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.