91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java中的hashcode和equals有什么區別

發布時間:2020-07-03 14:14:08 來源:億速云 閱讀:245 作者:元一 欄目:編程語言

java中的hashcode和equals有什么區別?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

hashcode:對象的初始地址的整數表示

在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對象,返回的哈希碼也一樣。

hashCode是為了提高在散列結構存儲中查找的效率,在線性表中沒有作用。

equals被用來檢測兩個對象是否相等,即兩個對象的內容是否相等。

equals 方法(是String類從它的超類Object中繼承的)
==用于比較引用和比較基本數據類型時具有不同的功能:
比較基本數據類型,如果兩個值相同,則結果為true
而在比較引用時,如果引用指向內存中的同一對象,結果為true

區別:

  1. 一般一個類的對象如果會存儲在HashTable,HashSet,HashMap等散列存儲結構中,那么重寫equals后最好也重寫hashCode,否則會導致存儲數據的不唯一性(存儲了兩個equals相等的數據)。而如果確定不會存儲在這些散列結構中,則可以不重寫hashCode。

  2. 若兩個對象equals返回true,則hashCode有必要也返回相同的int數。

  3. 若兩個對象equals返回false,則hashCode不一定返回不同的int數,但為不相等的對象生成不同hashCode值可以提高哈希表的性能。

  4. 若兩個對象hashCode返回相同int數,則equals不一定返回true。

  5. 若兩個對象hashCode返回不同int數,則equals一定返回false。

  6. 同一對象在執行期間若已經存儲在集合中,則不能修改影響hashCode值的相關信息,否則會導致內存泄露問題。

  7. 一般來說涉及到對象之間的比較大小就需要重寫equals方法。

關于java中的hashcode和equals有什么區別問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

方山县| 莱芜市| 浦东新区| 西和县| 无为县| 筠连县| 江山市| 桐柏县| 永顺县| 平阳县| 高雄县| 错那县| 武鸣县| 延庆县| 衡南县| 平阳县| 禄劝| 沧州市| 互助| 台湾省| 武冈市| 突泉县| 华容县| 乡城县| 锦州市| 成都市| 宜宾县| 巧家县| 鸡泽县| 太仓市| 含山县| 芜湖市| 南宁市| 商城县| 阜宁县| 郸城县| 寿宁县| 中阳县| 噶尔县| 澄迈县| 揭阳市|