真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java中的hashcode和equals有什么區(qū)別

java中的hashcode和equals有什么區(qū)別?針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。

大連網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)公司,大連網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為大連千余家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)公司要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的大連做網(wǎng)站的公司定做!

hashcode:對(duì)象的初始地址的整數(shù)表示

在Java中,哈希碼代表對(duì)象的特征。
例如對(duì)象 String str1 = “aa”, str1.hashCode= 3104
String str2 = “bb”, str2.hashCode= 3106
String str3 = “aa”, str3.hashCode= 3104
根據(jù)HashCode由此可得出str1!=str2,str1==str3
下面給出幾個(gè)常用的哈希碼的算法。
1、Object類的hashCode.返回對(duì)象的 [1]  內(nèi)存地址經(jīng)過(guò)處理后的結(jié)構(gòu),由于每個(gè)對(duì)象的內(nèi)存地址都不一樣,所以哈希碼也不一樣。
2、String類的hashCode.根據(jù)String類包含的字符串的內(nèi)容,根據(jù)一種特殊算法返回哈希碼,只要字符串所在的堆空間相同,返回的哈希碼也相同。

3、Integer類,返回的哈希碼就是Integer對(duì)象里所包含的那個(gè)整數(shù)的數(shù)值,例如Integer i1=new Integer(100),i1.hashCode的值就是100 。由此可見,2個(gè)一樣大小的Integer對(duì)象,返回的哈希碼也一樣。

hashCode是為了提高在散列結(jié)構(gòu)存儲(chǔ)中查找的效率,在線性表中沒有作用。

equals被用來(lái)檢測(cè)兩個(gè)對(duì)象是否相等,即兩個(gè)對(duì)象的內(nèi)容是否相等。

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

區(qū)別:

  1. 一般一個(gè)類的對(duì)象如果會(huì)存儲(chǔ)在HashTable,HashSet,HashMap等散列存儲(chǔ)結(jié)構(gòu)中,那么重寫equals后最好也重寫hashCode,否則會(huì)導(dǎo)致存儲(chǔ)數(shù)據(jù)的不唯一性(存儲(chǔ)了兩個(gè)equals相等的數(shù)據(jù))。而如果確定不會(huì)存儲(chǔ)在這些散列結(jié)構(gòu)中,則可以不重寫hashCode。

  2. 若兩個(gè)對(duì)象equals返回true,則hashCode有必要也返回相同的int數(shù)。

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

  4. 若兩個(gè)對(duì)象hashCode返回相同int數(shù),則equals不一定返回true。

  5. 若兩個(gè)對(duì)象hashCode返回不同int數(shù),則equals一定返回false。

  6. 同一對(duì)象在執(zhí)行期間若已經(jīng)存儲(chǔ)在集合中,則不能修改影響hashCode值的相關(guān)信息,否則會(huì)導(dǎo)致內(nèi)存泄露問(wèn)題。

  7. 一般來(lái)說(shuō)涉及到對(duì)象之間的比較大小就需要重寫equals方法。

關(guān)于java中的hashcode和equals有什么區(qū)別問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。


分享題目:java中的hashcode和equals有什么區(qū)別
網(wǎng)頁(yè)路徑:http://weahome.cn/article/jsegss.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部