第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

java中StringBuffer對(duì)象的哈希碼是如何生成的?

java中StringBuffer對(duì)象的哈希碼是如何生成的?

慕桂英546537 2023-06-28 15:22:43
我正在學(xué)習(xí)Stringjava,在學(xué)習(xí)過程中我開始知道哈希碼是為每個(gè)字符串生成的。我想知道哈希碼是如何生成的StringBuffer。
查看完整描述

2 回答

?
qq_遁去的一_1

TA貢獻(xiàn)1725條經(jīng)驗(yàn) 獲得超8個(gè)贊

每當(dāng)在使用類的實(shí)現(xiàn)的實(shí)例上調(diào)用時(shí),該類StringBuffer不會(huì)重寫hashCode()從類繼承的方法。ObjecthashCodeStringBufferObjecthashCode


這是因?yàn)樗且粋€(gè)可變對(duì)象,與創(chuàng)建后您可以輕松修改對(duì)象的狀態(tài)StringBuffer不同。這使得它不適合在任何基于“散列”的數(shù)據(jù)結(jié)構(gòu)(例如 a)中使用,因?yàn)樗鼤?huì)不一致。StringStringBufferHashMap


hashCode類的方法是Object本地方法,通常通過將對(duì)象的內(nèi)部地址轉(zhuǎn)換為整數(shù)作為哈希碼值來實(shí)現(xiàn),也可能不是,因?yàn)檫@取決于 JVM 的內(nèi)部實(shí)現(xiàn),但在不可變類String中hashCode,使用對(duì)象的內(nèi)容進(jìn)行覆蓋和實(shí)現(xiàn),String以使其在哈希數(shù)據(jù)結(jié)構(gòu)中使用一致。


就像簡單的實(shí)驗(yàn)一樣,您可以運(yùn)行代碼片段來檢查這個(gè)理論:


StringBuffer s1 = new StringBuffer("foo");

StringBuffer s2 = new StringBuffer("foo");


System.out.println(s1.hashCode() == s2.hashCode());

System.out.println(s1.toString().hashCode() == s2.toString().hashCode());

這將輸出false和true。這是因?yàn)閷?shí)例String實(shí)際上是使用對(duì)象的狀態(tài)來計(jì)算哈希碼,因此 和 是相同s1.toString()的s2.toString()。


查看完整回答
反對(duì) 回復(fù) 2023-06-28
?
慕森卡

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超8個(gè)贊

StringBuffer直接擴(kuò)展Object類,并且不會(huì)覆蓋hashCodeObject。所以 的實(shí)現(xiàn)StringBuffer::hashCode與 的實(shí)現(xiàn)相同Object::hashCode



查看完整回答
反對(duì) 回復(fù) 2023-06-28
  • 2 回答
  • 0 關(guān)注
  • 190 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)