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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

hashCode()中的代碼看不明白

??? @Override
?? ?public int hashCode() {
?? ??? ?final int prime = 31;
?? ??? ?int result = 1;
?? ??? ?result = prime * result + ((name == null) ? 0 : name.hashCode());
?? ??? ?return result;
?? ?}

這段代碼為什么要判斷 (name==null) 的值并返回 0 或者 name.hashCode() 再加上 result*31 ?

正在回答

1 回答

因?yàn)槿绻鹡ame==null 則返回0;那么result就是一個(gè)固定值;

name.hashCode()則是將name值轉(zhuǎn)換為hash值,再加上前面的固定值,這樣就造成了,如果name值在不被修改的情況下,return result返回的永遠(yuǎn)是一個(gè)固定值,這樣就判定了是否一致;如果name值被修改,那么肯定是不一致的了~~~

1 回復(fù) 有任何疑惑可以回復(fù)我~
#1

慕粉3620947 提問(wèn)者

既然name值在不被修改的情況下,name.hashCode()返回的永遠(yuǎn)是一個(gè)固定值,只用name.hashCode()就可以判斷是否一致. 那為什么要加上prime*result呢. 像下面這樣重寫Course的hashCode()可否 @Override ?public int hashCode() { return name.hashCode(); }
2016-07-21 回復(fù) 有任何疑惑可以回復(fù)我~
#2

木刻雪原 回復(fù) 慕粉3620947 提問(wèn)者

31是一個(gè)素?cái)?shù),當(dāng)然也可以用其它的,只是一個(gè)默認(rèn)的傳統(tǒng),用31*1+hashcode是因?yàn)閖vm虛擬機(jī)可以對(duì)結(jié)果值做優(yōu)化,至于優(yōu)化的具體實(shí)現(xiàn)都是虛擬機(jī)完成的,這個(gè)只要遵循即可,至于jvm是怎樣完成的,我就不清楚了~
2016-07-21 回復(fù) 有任何疑惑可以回復(fù)我~
#3

慕粉3620947 提問(wèn)者

非常感謝!
2016-07-21 回復(fù) 有任何疑惑可以回復(fù)我~

舉報(bào)

0/150
提交
取消

hashCode()中的代碼看不明白

我要回答 關(guān)注問(wèn)題
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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