您好,登錄后才能下訂單哦!
這篇文章主要介紹了java如何證明字符串是不可變的,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
如何證明字符串是不可變的
字符串不可變的這個(gè)事我曾寫過兩篇文章,寫到最后我都要吐了。但是仍然會有一些同學(xué)弄不明白,隔段時(shí)間就有人私信我,我就不得不把之前的文章放到收藏夾,問的時(shí)候我就把鏈接發(fā)給他。
之所以造成這個(gè)混亂,有很多因素,比如說,Java 到底是值傳遞還是引用傳遞?字符串常量池是個(gè)什么玩意?
這次又不得不談,雖然煩透了,但仍然要證明啊!
public class StringImmutabilityTest { public static void main(String[] args) { String s1 = "沉默王二"; String s2 = s1; System.out.println(s1 == s2); s1 = "沉默王三"; System.out.println(s1 == s2); System.out.println(s2); } }
輸出結(jié)果如下所示:
true false 沉默王二
1)String s1 = "沉默王二",Java 在字符串常量池中創(chuàng)建“沉默王二”這串字符的對象,并且把地址引用賦值給 s1
2)String s2 = s1,s2 和 s1 指向了同一個(gè)地址引用——常量池中的那個(gè)“沉默王二”。
所以,此時(shí) s1 == s2 為 true。
3)s1 = "沉默王三",Java 在字符串常量池中創(chuàng)建“沉默王三”這串字符的對象,并且把地址引用賦值給 s1,但 s2 仍然指向的是“沉默王二”那串字符對象的地址引用。
所以,此時(shí) s1 == s2 為 false,s2 的輸出結(jié)果為“沉默王二”就證明了字符串是不可變的。
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“java如何證明字符串是不可變的”這篇文章對大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。