如圖列印一個物件的值。

重寫equals之后,在此列印這個物件,輸出改變了

請大神解答這是為什么?
P.S.還有就是如果new了兩個物件,屬性一模一樣,重寫equals之后,列印出的哈希值一模一樣,這是什么原因?
uj5u.com熱心網友回復:
在Java中,哈希碼代表物件的特征。例如物件 String str1 = “aa”, str1.hashCode= 3104
String str2 = “bb”, str2.hashCode= 3106
String str3 = “aa”, str3.hashCode= 3104
根據HashCode由此可得出str1!=str2,str1==str3
下面給出幾個常用的哈希碼的演算法。
1、Object類的hashCode.回傳物件的 [1] 記憶體地址經過處理后的結構,由于每個物件的記憶體地址都不一樣,所以哈希碼也不一樣。
2、String類的hashCode.根據String類包含的字串的內容,根據一種特殊演算法回傳哈希碼,只要字串所在的堆空間相同,回傳的哈希碼也相同。
3、Integer類,回傳的哈希碼就是Integer物件里所包含的那個整數的數值,例如Integer i1=new Integer(100),i1.hashCode的值就是100 。由此可見,2個一樣大小的Integer物件,回傳的哈希碼也一樣。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/242979.html
標籤:Java SE
上一篇:java內嵌瀏覽器
