三張圖完全瞭解Java中字符串的不變性

原文出處: Hollis(@Hollis_Chuang)編程

定義一個字符串

1
<code>String s = "abcd" ;</code>

String-Immutability-1

s中保存了string對象的引用。下面的箭頭能夠理解爲「存儲他的引用」。架構

使用變量來賦值變量

1
<code>String s2 = s;</code>

String-Immutability-2

s2保存了相同的引用值,由於他們表明同一個對象。網站

字符串鏈接

1
<code>s = s.concat( "ef" );</code>

string-immutability

s中保存的是一個從新建立出來的string對象的引用。ui

總結

一旦一個string對象在內存(堆)中被建立出來,他就沒法被修改。特別要注意的是,String類的全部方法都沒有改變字符串自己的值,都是返回了一個新的對象。spa

若是你須要一個可修改的字符串,應該使用StringBuffer 或者 StringBuilder。不然會有大量時間浪費在垃圾回收上,由於每次試圖修改都有新的string對象被建立出來。code

問啊-定製化IT教育平臺,牛人一對一服務,有問必答,開發編程社交頭條 官方網站:www.wenaaa.com 下載問啊APP,參與官方懸賞,賺百元現金。orm


QQ羣290551701 彙集不少互聯網精英,技術總監,架構師,項目經理!開源技術研究,歡迎業內人士,大牛及新手有志於從事IT行業人員進入!對象

相關文章
相關標籤/搜索