Java 中字符串的不變性
String 對(duì)象創(chuàng)建后則不能被修改,是不可變的,所謂的修改其實(shí)是創(chuàng)建了新的對(duì)象,所指向的內(nèi)存空間不同贡避。如下所示:
運(yùn)行結(jié)果:
結(jié)合上面的代碼,關(guān)于字符串小伙伴們必須需要了解滴:
1予弧、 通過 String s1="愛慕課"; 聲明了一個(gè)字符串對(duì)象领舰, s1 存放了到字符串對(duì)象的引用历筝,在內(nèi)存中的存放引用關(guān)系如下圖所示:
然后通過 s1="歡迎來到:"+s1; 改變了字符串 s1 遭殉,其實(shí)質(zhì)是創(chuàng)建了新的字符串對(duì)象刁标,變量 s1 指向了新創(chuàng)建的字符串對(duì)象,如下圖所示:
2蚓庭、 一旦一個(gè)字符串在內(nèi)存中創(chuàng)建致讥,則這個(gè)字符串將不可改變仅仆。如果需要一個(gè)可以改變的字符串,我們可以使用StringBuffer或者StringBuilder(后面章節(jié)中會(huì)講到)垢袱。
3墓拜、 每次 new 一個(gè)字符串就是產(chǎn)生一個(gè)新的對(duì)象,即便兩個(gè)字符串的內(nèi)容相同请契,使用 ”==” 比較時(shí)也為 ”false” ,如果只需比較內(nèi)容是否相同咳榜,應(yīng)使用 ”equals()” 方法(前面條件運(yùn)算符章節(jié)講過哦~~)