一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Java Object類

 h陰晴雨 2014-09-18

Object類

  java.lang.Object

  java.lang包在使用的時候無需顯示導入,編譯時由編譯器自動導入。

  Object類是類層次結構的根,Java中所有的類從根本上都繼承自這個類。

  Object類是Java中唯一沒有父類的類。

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

 

Object類中的方法

  構造方法:public Object()

  文檔中的類概覽:

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

 

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

 

protected Object clone()

  Creates and returns a copy of this object.

  Object類中的說明是:

  protected Object clone()

  throws CloneNotSupportedException

  這個方法比較特殊:

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

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

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

 

boolean equals(Object obj)

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

  “==”運算符判斷兩個引用是否指向同一個對象。

  對于Object類的equals()方法來說,它判斷調用equals()方法的引用于傳進來的引用是否一致,即這兩個引用是否指向的是同一個對象。

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

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

 

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

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

 

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

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

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

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

  一致性(consistent):兩個非空引用x和y,x.equals(y)的多次調用應該保持一致的結果,(前提條件是在多次比較之間沒有修改x和y用于比較的相關信息)。

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

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

 

int hashCode()

  Returns a hash code value for the object.

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

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

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

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

  1.在Java應用的一次執(zhí)行過程中,如果對象用于equals比較的信息沒有被修改,那么同一個對象多次調用hashCode()方法應該返回同一個整型值。

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

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

  3.并沒有強制要求如果equals()判斷兩個對象不相等,那么它們的hashCode()方法就應該返回不同的值。

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

 

String toString()

  Returns a string representation of the object.

  當打印引用,如調用System.out.println()時,會自動調用對象的toString()方法,打印出引用所指的對象的toString()方法的返回值,因為每個類都直接或間接地繼承自Object,因此每個類都有toString()方法。

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

 

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

 

參考資料推薦

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

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

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

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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    日韩成人动画在线观看| 久久精品a毛片看国产成人| 欧美二区视频在线观看| 夫妻性生活真人动作视频| 国产精品午夜福利在线观看 | 91久久精品国产一区蜜臀| 国产免费黄片一区二区| 不卡在线播放一区二区三区| 婷婷基地五月激情五月| 国产成人精品国产成人亚洲| 99久久精品一区二区国产| 狠狠干狠狠操亚洲综合| 国产三级黄片在线免费看| av一区二区三区天堂| 日本精品最新字幕视频播放| 俄罗斯胖女人性生活视频| 国产女高清在线看免费观看| 国产精品人妻熟女毛片av久| 风韵人妻丰满熟妇老熟女av| 国产情侣激情在线对白| 日韩欧美在线看一卡一卡| 国产一区二区三区成人精品| 又黄又硬又爽又色的视频| 欧美人妻盗摄日韩偷拍| 国产精品不卡一区二区三区四区| 中文字幕日韩欧美理伦片| 日韩少妇人妻中文字幕| 九九热这里有精品20| av国产熟妇露脸在线观看| 精品国产丝袜一区二区| 不卡一区二区高清视频| 欧美高潮喷吹一区二区| 免费人妻精品一区二区三区久久久| 午夜福利视频偷拍91| 精品国产日韩一区三区| 亚洲中文字幕在线观看四区| 国产日韩久久精品一区| 国产欧美日韩一级小黄片| 日韩免费国产91在线| 91人妻人澡人人爽人人精品| 在线免费国产一区二区|