課程
/后端開發(fā)
/Java
/Java入門第三季
String s1="愛慕課";
String s2="愛慕課";
System.out.println(s1==s2);
為什么s1==s2是true???不是地址不同嗎
2017-05-06
源自:Java入門第三季 2-2
正在回答
字符串可以說在被創(chuàng)建后便是一個常量,內(nèi)容不可更改。
更改的話相當于變相創(chuàng)建了一個新的字符串。
s1創(chuàng)建了一個字符串為imooc,將這個常量保存在了內(nèi)存里。
創(chuàng)建s2時,由于s2創(chuàng)建的內(nèi)容和s1一樣,所以s2并沒有在內(nèi)存中創(chuàng)建一個新的字符串,而是指向s1所創(chuàng)字符串的內(nèi)存地址,所以s1和s2指向的是同一個常量,s1=s2。
s3是在s1的基礎(chǔ)上創(chuàng)建了一個新的字符串I love imooc,創(chuàng)建時開辟了新的內(nèi)存地址
s4同理,也是在s1上創(chuàng)建了新的字符串。
字符串之間的比較,是比較內(nèi)存首地址是否相同,而不是內(nèi)容。
所以s1和s2在內(nèi)存的指向上是相同,而s3和s4是各自新開辟的字符串,事先建立的字符串后付的值,所以s3和s4指向的內(nèi)容并不是一個,所以內(nèi)存地址不同,從而不相等
這個是放在棧里面的,比較的直接是數(shù)值,也就是里面的內(nèi)容。若是放在堆里面的就是地址值,就是假僅供參考
慕數(shù)據(jù)3565510
舉報
Java中你必須懂得常用技能,不容錯過的精彩,快來加入吧
1 回答s1==s2,為什么為true;
3 回答為什么?s1==s2是true,s3==s4是false
1 回答為什么s1 == s2是true s3==s4是false
1 回答為什么s1與s2比較 顯示TURE s1 。 s3,s3和s4的比較結(jié)果為FALSE?
1 回答s1,s2只創(chuàng)建一個,這是一種java規(guī)定么?還是什么語法?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學習伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2017-07-15
字符串可以說在被創(chuàng)建后便是一個常量,內(nèi)容不可更改。
更改的話相當于變相創(chuàng)建了一個新的字符串。
s1創(chuàng)建了一個字符串為imooc,將這個常量保存在了內(nèi)存里。
創(chuàng)建s2時,由于s2創(chuàng)建的內(nèi)容和s1一樣,所以s2并沒有在內(nèi)存中創(chuàng)建一個新的字符串,而是指向s1所創(chuàng)字符串的內(nèi)存地址,所以s1和s2指向的是同一個常量,s1=s2。
s3是在s1的基礎(chǔ)上創(chuàng)建了一個新的字符串I love imooc,創(chuàng)建時開辟了新的內(nèi)存地址
s4同理,也是在s1上創(chuàng)建了新的字符串。
字符串之間的比較,是比較內(nèi)存首地址是否相同,而不是內(nèi)容。
所以s1和s2在內(nèi)存的指向上是相同,而s3和s4是各自新開辟的字符串,事先建立的字符串后付的值,所以s3和s4指向的內(nèi)容并不是一個,所以內(nèi)存地址不同,從而不相等
2017-05-06
這個是放在棧里面的,比較的直接是數(shù)值,也就是里面的內(nèi)容。若是放在堆里面的就是地址值,就是假僅供參考