天道不一定酬所有勤
但是,天道只酬勤

三張圖徹底了解Java中字符串的不變性

該文章是圖說Java系列文章中的一篇


定義一個字符串

String s = "abcd";

String-Immutability-1

s中保存了string對象的引用。下面的箭頭可以理解為“存儲他的引用”。

使用變量來賦值變量

String s2 = s;

String-Immutability-2

s2保存了相同的引用值,因為他們代表同一個對象。

字符串連接

s = s.concat("ef");

string-immutability

s中保存的是一個重新創建出來的string對象的引用。

總結

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

如果你需要一個可修改的字符串,應該使用StringBuffer 或者 StringBuilder。否則會有大量時間浪費在垃圾回收上,因為每次試圖修改都有新的string對象被創建出來。

(全文完) 歡迎關注『Java之道』微信公眾號
贊(7)
如未加特殊說明,此網站文章均為原創,轉載必須注明出處。HollisChuang's Blog » 三張圖徹底了解Java中字符串的不變性
分享到: 更多 (0)

評論 2

  • 昵稱 (必填)
  • 郵箱 (必填)
  • 網址
  1. #1

    很清晰,不錯。

    咸魚也有夢想4年前 (2016-07-27)回復
  2. #2

    第一個 字符串字面量放在的應該是方法區中的Runtime Constant Pool吧,而不是The Heap

    youyinnn1年前 (2019-03-02)回復

HollisChuang's Blog

聯系我關于我
大乐透复式返奖 广西快乐双彩走势图 股票涨跌停限制 基金配资10倍 3d历史试机号与开奖号对照表 上海天天彩选4中奖规则 幸运农场开奖信息 上港集团明日股票行情 安徽快三万能走势图 澳洲幸运10破解公式方法 1万炒股一年最多挣多少