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
查看全部
avatar-img
發表第一個留言支持創作者!
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液