首頁  >  文章  >  Java  >  java如何證明字串是不可變的

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

王林
王林轉載
2023-04-29 08:46:121445瀏覽

如何證明字串是不可變的

字串不可變的這個事我曾寫過兩篇文章,寫到最後我都要吐了。但還是會有一些同學搞不明白,隔段時間就有人私訊我,我就得把之前的文章放到收藏夾,問的時候我就把連結發給他。

之所以造成這個混亂,有很多因素,比如說,Java 到底是值傳遞還是引用傳遞?字串常數池是個什麼玩意?

這次又不得不談,雖然煩透了,但仍然要證明啊!

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);     } }

輸出結果如下所示:

true false 沉默王二

1)String s1 = "沉默王二",Java 在字串常數池中創建“沉默王二」這串字元的對象,並且把位址引用賦值給s1

2)String s2 = s1,s2 和s1 指向了同一個位址引用——常數池中的那個「沉默王二」。

所以,此時 s1 == s2 為 true。

3)s1 = "沉默王三",Java 在字串常數池中創建「沉默王三」這串字元的對象,並且把地址引用賦值給s1,但s2  仍然指向的是“沉默王二」那串字元物件的位址引用。

所以,此時 s1 == s2 為 false,s2 的輸出結果為「沉默王二」就證明了字串是不可變的。

以上是java如何證明字串是不可變的的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除