程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA編程入門知識 >> Effective java學習筆記7:改寫equals的時候遵守約定

Effective java學習筆記7:改寫equals的時候遵守約定

編輯:JAVA編程入門知識

  在Java裡面object equals()的概念是兩個引用指向的是同一個對象,即兩者指向同一個對象,才equals()。但是也有特例,比如說一些原始類型,integer,string等屬於值相等。就是說,值相等,也就equals()了。實際上,他們都改寫了object的equals()方法。但是”類型安全”的值類不需要改寫equals()。
  還有,當我們當前的類有特定的”相等”的定義的時候,而且我們的超類並沒有改寫equals()方法,就需要改寫equals()方法了。
  改寫的規范-object必須滿足:
  1. 自反
  2. 對稱
  3. 傳遞
  4. 一致
  5. X非空,x.equals(null)返回false
  
  為了實現高質量的equals()改寫,effective java提醒我們要注重一下幾點:
  1. 使用==操作符檢查是否指向同一個對象,這是一個性能優化的手段。
  2. 使用instanceof來檢查是否為某個類,同樣也是性能優化的手段。
  3. 把實參轉換到正確的類型,上面一步保證了這一步不會有錯誤。
  4. 檢查類裡的每一個要害域是否都相等。
  
  還有要注重的就是,改寫equals()方法的同時,都要改寫hashcode方法。(下一篇裡會提到為什麼要這樣)
  
  【matrix 原創】-轉載請注明來自:www.matrix.org.cn
 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved