java基礎——equals方法

Object類的簡單介紹(#)

所有類的超類

  • java類中所有類的始祖
//但在實現(xiàn)上不需要這樣寫
public class Employee extends Object{...}
//如果沒有明確的指出超類,那么Object就被認為是這個類的超類
public class Employee {...}

所有的數(shù)組類型肩杈,不管是對象數(shù)組還是基本類型的數(shù)組都擴展了 Object 類

equals()方法的使用情況(#)

Object類中的equals()實現(xiàn)(##)

Object類既然是所有類的超類,那么其中的一些方法就是所有類都可以使用的来累,比如說其中的equals方法泉褐,equals()方法在Object類中的實現(xiàn)如下:

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

其主要作用是用于檢測一個對象是否等于另外一個對象规哪。在該類中,這個方法通過判斷兩個對象是否具有相同的引用來決定返回值:

  • 如果具有相同的引用——返回true熄云,否則返回false

Object類中equals方法的適用問題(##)

但是對于多數(shù)類來說膨更, 這種判斷并沒有什么意義!缴允!

比如荚守,采用這種方式比較兩個 PrintStream 對象是否相等就完全沒有意義

經(jīng)常需要檢測兩個對象狀態(tài)的相等性, 如果兩個對象的狀態(tài)相等练般, 就認為這兩個對象是相等的

對象狀態(tài)——對于每個特定的類實例(對象)都有一組特定的實例域值矗漾。這些值的集合就是這個對象的當前狀態(tài) ( state )。 例如一個Employee對象a{name: "張三"薄料,salary: 5000, gender : "male"}和另一個Employee對象b{name: "張三"敞贡,salary: 5000, gender : "male"},兩者雖然引用不同摄职,但是其中的值都是相等的誊役,那么這兩個對象狀態(tài)就是相等的

綜上所述获列,如果需要比較兩個對象的狀態(tài)是否相同,那么就需要重寫Object中的equals方法蛔垢。

總結其使用情況(##)

  • 情況 1:類沒有覆蓋 equals() ?法击孩。則通過 equals() ?較該類的兩個對象時,調用超類Object中的equals()方法啦桌,比較的是兩個對象的引用是否相同。

  • 情況 2:類覆蓋了 equals() ?法及皂。?般甫男,我們都覆蓋 equals() ?法來?較兩個對象的狀態(tài)是否相等;若它們的狀態(tài)相等验烧,則返回 true (即板驳,認為這兩個對象相等)。

equals()方法編寫注意(#)

Java 語言規(guī)范要求 equals 方法具有下面的特性:
1 ) 自反性碍拆;2 ) 對稱性若治;3 ) 傳遞性;4 ) 一致性感混;5 ) 對于任意非空引用 x, x.equals(null) 應該返回 false

這就很好的避免了類庫實現(xiàn)者在數(shù)據(jù)結構中定位一個元素時還要考慮調用 x.equals(y), 還是調用 y.equals(x) 的問題

此外端幼,注意方法重載時參數(shù)的問題,例如下面的例子

public class Employee
{
    public boolean equals(Employee other) {
       ... ...
    }
}

這個方法聲明的顯式參數(shù)類型是 Employee弧满。其結果并沒有覆蓋 Object 類的 equals 方法婆跑, 而是定義了一個完全無關的方法。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末庭呜,一起剝皮案震驚了整個濱河市滑进,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌募谎,老刑警劉巖扶关,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異数冬,居然都是意外死亡节槐,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進店門拐纱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來疯淫,“玉大人,你說我怎么就攤上這事戳玫∥醪簦” “怎么了?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵咕宿,是天一觀的道長币绩。 經(jīng)常有香客問我蜡秽,道長,這世上最難降的妖魔是什么缆镣? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任芽突,我火速辦了婚禮,結果婚禮上董瞻,老公的妹妹穿的比我還像新娘寞蚌。我一直安慰自己,他們只是感情好钠糊,可當我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布挟秤。 她就那樣靜靜地躺著,像睡著了一般抄伍。 火紅的嫁衣襯著肌膚如雪艘刚。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天截珍,我揣著相機與錄音攀甚,去河邊找鬼。 笑死岗喉,一個胖子當著我的面吹牛秋度,可吹牛的內容都是我干的。 我是一名探鬼主播钱床,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼静陈,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了诞丽?” 一聲冷哼從身側響起鲸拥,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎僧免,沒想到半個月后刑赶,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡懂衩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年撞叨,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片浊洞。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡牵敷,死狀恐怖,靈堂內的尸體忽然破棺而出法希,到底是詐尸還是另有隱情枷餐,我是刑警寧澤,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布苫亦,位于F島的核電站毛肋,受9級特大地震影響怨咪,放射性物質發(fā)生泄漏。R本人自食惡果不足惜润匙,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一诗眨、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧孕讳,春花似錦匠楚、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蟀苛,卻和暖如春益咬,著一層夾襖步出監(jiān)牢的瞬間逮诲,已是汗流浹背帜平。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留梅鹦,地道東北人裆甩。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像齐唆,于是被迫代替她去往敵國和親嗤栓。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,685評論 2 360

推薦閱讀更多精彩內容