溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

java如何證明字符串是不可變的

發(fā)布時(shí)間:2022-03-17 11:47:56 來源:億速云 閱讀:240 作者:小新 欄目:開發(fā)技術(shù)

這篇文章主要介紹了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í)!

向AI問一下細(xì)節(jié)

免責(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)容。

AI