在java裡面object equals()的概念是兩個引用指向的是同一個對象
即兩者指向同一個對象
才equals()
但是也有特例
比如說一些原始類型
integer
string等屬於值相等
就是說
值相等
也就equals()了
實際上
他們都改寫了object的equals()方法
但是
類型安全
的值類不需要改寫equals()
還有
當我們當前的類有特定的
相等
的定義的時候
而且我們的超類並沒有改寫equals()方法
就需要改寫equals()方法了
改寫的規范-object必須滿足
. 自反
. 對稱
. 傳遞
. 一致
. X非空
x
equals(null)返回false
為了實現高質量的equals()改寫
effective java提醒我們要注意一下幾點
. 使用==操作符檢查是否指向同一個對象
這是一個性能優化的手段
. 使用instanceof來檢查是否為某個類
同樣也是性能優化的手段
. 把實參轉換到正確的類型
上面一步保證了這一步不會有錯誤
. 檢查類裡的每一個關鍵域是否都相等
還有要注意的就是
改寫equals()方法的同時
都要改寫hashcode方法
From:http://tw.wingwit.com/Article/program/Java/Javascript/201311/25355.html