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

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

java 中兩個 String 具有相同的 hashCode 使用 == 判斷返回 false ?

java 中兩個 String 具有相同的 hashCode 使用 == 判斷返回 false ?

慕田峪9158850 2019-03-13 18:15:24
    String str1 = new String("hello");    String str2 = new String("hello");            System.out.println(str1 == str2);    System.out.println(str1.equals(str2));    System.out.println(str1.hashCode());    System.out.println(str2.hashCode());代碼如上,輸出結(jié)果:    false    true    99162322    99162322為什么具有相同的 hashCode 返回的是 false 呢
查看完整描述

5 回答

?
白板的微信

TA貢獻(xiàn)1883條經(jīng)驗(yàn) 獲得超3個贊

看書的時(shí)候不仔細(xì),弄清楚了;
String 重寫了 hashCode 方法,其 hashCode 值是由內(nèi)容決定的,而不是地址決定的

查看完整回答
反對 回復(fù) 2019-04-25
?
MYYA

TA貢獻(xiàn)1868條經(jīng)驗(yàn) 獲得超4個贊

在java中判斷String 使用 == 是判斷兩個對象的地址而不是hashCode。因?yàn)槟氵@是兩個 String 對象 ,因?yàn)槟氵@兩個都是使用new 的,所以使用 == 是 false。


查看完整回答
反對 回復(fù) 2019-04-25
?
浮云間

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超4個贊

hashCode 和 == 是不一樣的。 ==比較的是內(nèi)存地址, 而hashCode是根據(jù)實(shí)例變量計(jì)算出來的。


你使用了new創(chuàng)建了兩個String實(shí)例(new 關(guān)鍵字是會開辟新內(nèi)存空間的),而不是直接引用string池中的“hello”,下面是此構(gòu)造器的源代碼。


public String(String original) {

   this.value = original.value;

   this.hash = original.hash;

}

而String的hash計(jì)算方法是根據(jù)上述代碼中的value和hash。


查看完整回答
反對 回復(fù) 2019-04-25
?
慕的地10843

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

==比較的是內(nèi)存地址,hash和equals差不多都是從字符串的每個char得來的,每個char一樣,hash一樣,但是內(nèi)存地址不一樣


查看完整回答
反對 回復(fù) 2019-04-25
?
滄海一幻覺

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超5個贊

==判斷的是兩個引用變量是否指向同一個對象。當(dāng)兩個對象的內(nèi)容一樣,它們的hashcode 就是一樣的,但是它們的引用是不相等的


查看完整回答
反對 回復(fù) 2019-04-25
  • 5 回答
  • 0 關(guān)注
  • 989 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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