String 預設是不可變更的(immutable)

閱讀時間約 1 分鐘


String str = "abc";
String str2 = "qaz";
String str3 = "qaz";

System.out.println(str == str2); // false
System.out.println(str2 == str3); // true

str3 = "asd"; // 會在JVM的 Heap memory區塊的 string constant pool 新增一個 asd的字串並分配新地址


一開始宣告的str2與str3都是"qaz"

當宣告str2="qaz"時,string constant pool會新增一個存取"qaz"字串的位子並配予地址107

接著宣告str3="qaz",string constant pool會先檢查是否已經有"qaz"這個字串,如果已經存在,那麼就會將該地址107給到str3做指向

在程式第8行的時候將str3的值改為"asd",string constant pool 檢查此字串不存在,所以新增一個 asd的字串並分配新地址113,因此str3所指向的地址由107變為113

raw-image

雖然表面上改變了字串內容,但底層,在記憶體中,只是分配了不同的地址給你的變數做指向

如果希望真的直接改變記憶體中字串的內容

使用StringBuffer(Thread-safe)或StringBuilder(not Thread-safe)

我的Java學習日記
留言0
查看全部
發表第一個留言支持創作者!
你可能也想看
Thumbnail
八十-二十法則提到,在多數生活的現象中,約80%的效果是來自於20%的原因,除了經濟學、學習理論外,這個法則同樣也可以應用在生活中的幸福感上。 我們需要認知到擁有的越多不一定會越快樂,反而有可能會因為無法專注在少數事物上而產生空虛、迷茫的感覺。「極簡」精神最重要的一點在於放下對於「多」的執著,將有
Thumbnail
1.加權指數與櫃買指數 週五的加權指數在非農就業數據開出來後,雖稍微低於預期,但指數仍向上噴出,在美股開盤後於21500形成一個爆量假突破後急轉直下,就一路收至最低。 台股方面走勢需觀察週一在斷頭潮出現後,週二或週三開始有無買單進場支撐,在沒有明確的反轉訊號形成前,小夥伴盡量不要貿然抄底,或是追空
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
八十-二十法則提到,在多數生活的現象中,約80%的效果是來自於20%的原因,除了經濟學、學習理論外,這個法則同樣也可以應用在生活中的幸福感上。 我們需要認知到擁有的越多不一定會越快樂,反而有可能會因為無法專注在少數事物上而產生空虛、迷茫的感覺。「極簡」精神最重要的一點在於放下對於「多」的執著,將有
Thumbnail
1.加權指數與櫃買指數 週五的加權指數在非農就業數據開出來後,雖稍微低於預期,但指數仍向上噴出,在美股開盤後於21500形成一個爆量假突破後急轉直下,就一路收至最低。 台股方面走勢需觀察週一在斷頭潮出現後,週二或週三開始有無買單進場支撐,在沒有明確的反轉訊號形成前,小夥伴盡量不要貿然抄底,或是追空
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!