首先我們建立乙個類
public該類沒有重寫hashcode和equals方法class
people
public
void
setname(string name)
public
string getaddress()
public
void
setaddress(string address)
public
people()
public
people(string name, string address)
@override
public
string tostring()
}
下面我們進行比較
public結果為:static
void
main(string args)
說明如果沒有重寫equals()方法,則equals和==比較的都是位址。每生成乙個物件,虛擬機器都會重新生成乙個位址,因此比較結果都為false
我們加上hashcode和equals方法
public再次執行例項,結果為:class
people
public
void
setname(string name)
public
string getaddress()
public
void
setaddress(string address)
public
people()
public
people(string name, string address)
@override
public
string tostring()
@override
public
inthashcode()
@override
public
boolean
equals(object obj)
else
if (!address.equals(other.address))
return
false
;
if (name == null
) else
if (!name.equals(other.name))
return
false
;
return
true
; }
}
說明如果重寫equals()方法,則==比較的是位址,equals比較的是物件中的內容
和 equals 方法的區別
public static void main string args 結果 public static void main string args 結果 結果 結果 是乙個關係運算子,使用與所有內建的資料型別,同樣也適用於所有物件,檢查兩個物件是否相等。1中,a b 返回true。因為a b 都是...
和equals方法的區別
是乙個運算子,可以用於比較基本資料型別和引用資料型別 用於基本資料型別的時候,比較的是值是否相等,而用於引用資料型別的時候,比較的是位址值。實際使用equals 方法時,一般用於比較內容是否相同。因此,需要重寫equals方法。這裡分為系統類和自定義類進行說明 系統類一般都重寫過equals方法,比...
號和equals方法的區別
是乙個比較運算符號,既可以比較基本資料型別,也可以比較引用資料型別,基本資料型別比較的是值,引用資料型別比較的是位址值 只能比較引用資料型別,所有的物件都會繼承 object 類中的方法,沒有重寫 object 類中的 equals 方法,equals方法和 號比較引用資料型別無區別,重寫後的equ...