為什么要重寫toString()方法和hashcode()方法


一、toString():

在Object類里面定義toString()方法的時候返回的對象的哈希code碼,這個hashcode碼不能簡單明了的表示出對象的屬性。所以要重寫toString()方法。
當需要將一個對象輸出到顯示器時,通常要調用他的toString()方法,將對象的內容轉換為字符串.java中的所有類默認都有一個toString()方法。
默認情況下 System.out.println(對象名)或者System.out.println(對象名.toString())輸出的是此對象的類名和此對象對應內存的首地址如果想自定義輸出信息必須重寫toString()方法。

注意事項:

1.必須被聲明為public

2.返回類型為String

3.方法的名稱必須為toString,且無參數

4.方法體中不要使用輸出方法System.out.println()

 

二、hashCode():

在Object類里面定義的equals比較的是對象的引用是否指向同一塊內存地址。  一般情況下比較兩個對象時比較他的值是否一致,所以要進行重寫。重寫之后是為了比較兩個對象的value值是否相等。 特別指出,利用equals比較八大包裝對象(如int,float等)和String類(因為該類已重寫了equals和hashcode方法)對象時,默認比較的是值,在比較其它對象都是比較的引用地址。

注意事項:
1.自反性:對於任意的引用值x,x.equals(x)一定為true
2.對稱性:對於任意的引用值x 和 y,當x.equals(y)返回true,y.equals(x)也一定返回true
3.傳遞性:對於任意的引用值x、y和z,如果x.equals(y)返回true,並且y.equals(z)也返回true,那么x.equals(z)也一定返   回 true
4.一致性:對於任意的引用值x 和 y,如果用於equals比較的對象信息沒有被修改,多次調用x.equals(y)要么一致地返回true,要么一致地返回false
5.非空性:對於任意的非空引用值x,x.equals(null)一定返回false


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM