equals方法的學習筆記

2021-04-20 21:02:55 字數 827 閱讀 8156

equals方法的學習筆記

下面給出編寫一完美的equals方法的建議:

顯示引數命名為otherobject,稍後需要將它轉換成另乙個叫做other的變數.

檢測this與otherobject是否為引用同乙個物件.

if (this == otherobject) return

true;

這條語名只是乙個優化.實際上,這是一種經常採用的形式.因為計算這個等式要比乙個個地比較類中的域所付出的代價小得多.

檢測otherobject是否為null,如果為null,返回false.這項檢測是很必要的.

if (otherobject == null) return

false;

比較this與otherobject是否同屬乙個類.如果equals的語義在每個了類中所有改變,就使用getclass檢測:

if (getclass() != otherobject.getclass()) return

false;

如果所有子類都擁用統一的語義,就使用instanceof檢測:

if (!(otherobject instanceof classname)) return

false;

將otherobject轉換為相應的類型別變數:

classname other = (classname) otherobject;

現在開始對所有需要比較的域進行比較了.使用==比較基本型別域,使用equals比較物件域.如果所有的域都匹配,就返回true;否則返回false.

如果在子類中重新定義equals,就要在其中包含呼叫super.equals(other);

equals方法的特性

一 自反性 reflexive obj.equals obj true 二 對稱性 symmetric obja.equals objb true,那麼也有objb.equals obja true 三 傳遞性 transitive obja.equals objb true,objb.equals...

equals方法的重新

object類生成的equals方法在預設的情況下是進行位址比較,但有些時候並不能滿足我們的需要,所以需要按使用者的需求重新定義該方法。舉個例子 假設我們現在想判斷兩個person的資訊,如果全部資訊都相等的話就可以判斷為同乙個人。public class test 在person類重新equals...

equals方法的小結

儘管經常使用equals,也可能理解不一定神,最近又要使用collections.sort看到了這些,總結的不錯。首先equals方法必須滿足自反性 對稱性 傳遞性和一致性。自反性 x.equals x 必須返回true 對稱性 x.equals y 返回true時,y.equals x 也必須返回...