亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

嵊州市| 息烽县| 武平县| 保靖县| 盐边县| 宿迁市| 姜堰市| 保德县| 西林县| 泰来县| 武隆县| 灯塔市| 化州市| 河西区| 睢宁县| 惠东县| 马龙县| 沽源县| 木兰县| 获嘉县| 岳阳市| 南乐县| 手游| 宝坻区| 忻州市| 勃利县| 芜湖县| 崇仁县| 安徽省| 余江县| 额尔古纳市| 新和县| 贺州市| 桦南县| 新龙县| 东海县| 洛南县| 珲春市| 成安县| 即墨市| 上林县|