小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Java Object類

 h陰晴雨 2014-09-18

Object類

  java.lang.Object

  java.lang包在使用的時(shí)候無(wú)需顯示導(dǎo)入,編譯時(shí)由編譯器自動(dòng)導(dǎo)入。

  Object類是類層次結(jié)構(gòu)的根,Java中所有的類從根本上都繼承自這個(gè)類。

  Object類是Java中唯一沒(méi)有父類的類。

  其他所有的類,包括標(biāo)準(zhǔn)容器類,比如數(shù)組,都繼承了Object類中的方法。

 

Object類中的方法

  構(gòu)造方法:public Object()

  文檔中的類概覽:

2013-1-3 星期四 10-50-53

 

  Java中的每個(gè)類都具有定義在Object類中的這些方法。

 

protected Object clone()

  Creates and returns a copy of this object.

  Object類中的說(shuō)明是:

  protected Object clone()

  throws CloneNotSupportedException

  這個(gè)方法比較特殊:

  首先,使用這個(gè)方法的類必須實(shí)現(xiàn)java.lang.Cloneable接口,否則會(huì)拋出CloneNotSupportedException異常。

  Cloneable接口中不包含任何方法,所以實(shí)現(xiàn)它時(shí)只要在類聲明中加上implements語(yǔ)句即可。

  第二個(gè)比較特殊的地方在于這個(gè)方法是protected修飾的,覆寫clone()方法的時(shí)候需要寫成public,才能讓類外部的代碼調(diào)用。

 

boolean equals(Object obj)

  Indicates whether some other object is "equal to" this one.

  “==”運(yùn)算符判斷兩個(gè)引用是否指向同一個(gè)對(duì)象。

  對(duì)于Object類的equals()方法來(lái)說(shuō),它判斷調(diào)用equals()方法的引用于傳進(jìn)來(lái)的引用是否一致,即這兩個(gè)引用是否指向的是同一個(gè)對(duì)象。

  Object類中的equals()方法如下:

public boolean equals(Object obj)
{
    return (this == obj);
}

 

  即Object類中的equals()方法等價(jià)于==。

  只有當(dāng)繼承Object的類覆寫(override)了equals()方法之后,繼承類實(shí)現(xiàn)了用equals()方法比較兩個(gè)對(duì)象是否相等,才可以說(shuō)equals()方法與==的不同。

 

  equals()方法需要具有如下特點(diǎn):

  自反性(reflexive):任何非空引用x,x.equals(x)返回為true。

  對(duì)稱性(symmetric):任何非空引用x和y,x.equals(y)返回true當(dāng)且僅當(dāng)y.equals(x)返回true。

  傳遞性(transitive):任何非空引用x和y,如果x.equals(y)返回true,并且y.equals(z)返回true,那么x.equals(z)返回true。

  一致性(consistent):兩個(gè)非空引用x和y,x.equals(y)的多次調(diào)用應(yīng)該保持一致的結(jié)果,(前提條件是在多次比較之間沒(méi)有修改x和y用于比較的相關(guān)信息)。

  約定:對(duì)于任何非空引用x,x.equals(null)應(yīng)該返回為false。

  并且覆寫equals()方法時(shí),應(yīng)該同時(shí)覆寫hashCode()方法,反之亦然。

 

int hashCode()

  Returns a hash code value for the object.

  當(dāng)你覆寫(override)了equals()方法之后,必須也覆寫hashCode()方法,反之亦然。

  這個(gè)方法返回一個(gè)整型值(hash code value),如果兩個(gè)對(duì)象被equals()方法判斷為相等,那么它們就應(yīng)該擁有同樣的hash code。

  Object類的hashCode()方法為不同的對(duì)象返回不同的值,Object類的hashCode值表示的是對(duì)象的地址。

  hashCode的一般性契約(需要滿足的條件)如下:

  1.在Java應(yīng)用的一次執(zhí)行過(guò)程中,如果對(duì)象用于equals比較的信息沒(méi)有被修改,那么同一個(gè)對(duì)象多次調(diào)用hashCode()方法應(yīng)該返回同一個(gè)整型值。

  應(yīng)用的多次執(zhí)行中,這個(gè)值不需要保持一致,即每次執(zhí)行都是保持著各自不同的值。

  2.如果equals()判斷兩個(gè)對(duì)象相等,那么它們的hashCode()方法應(yīng)該返回同樣的值。

  3.并沒(méi)有強(qiáng)制要求如果equals()判斷兩個(gè)對(duì)象不相等,那么它們的hashCode()方法就應(yīng)該返回不同的值。

  即,兩個(gè)對(duì)象用equals()方法比較返回false,它們的hashCode可以相同也可以不同。但是,應(yīng)該意識(shí)到,為兩個(gè)不相等的對(duì)象產(chǎn)生兩個(gè)不同的hashCode可以改善哈希表的性能。

 

String toString()

  Returns a string representation of the object.

  當(dāng)打印引用,如調(diào)用System.out.println()時(shí),會(huì)自動(dòng)調(diào)用對(duì)象的toString()方法,打印出引用所指的對(duì)象的toString()方法的返回值,因?yàn)槊總€(gè)類都直接或間接地繼承自O(shè)bject,因此每個(gè)類都有toString()方法。

  Object類中的toString()方法定義如下:

 

public String toString()
{
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

 

參考資料推薦

  官方文檔和jdk中的源代碼src。

  幫助格式的文檔下載:http://www./javadoc/index.php

  推薦皮皮書屋:http://www./

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多