ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
我们用下面一组图来说明Java的不变性。 1.声明一个字符串 ~~~ String s = "abcd"; ~~~ s存储了字符串对象的引用。下面图片中的箭头就表示这种存储引用。 ![](https://box.kancloud.cn/2016-03-18_56eba2a94ace3.jpg) 2.将一个字符串变量赋值给另外一个字符串变量 ~~~ String s2 = s; ~~~ s2变量存储了同样的引用值。所以,两个变量指向同一个字符串对象。 ![](https://box.kancloud.cn/2016-03-18_56eba2a9634af.jpg) 3.合并字符串 ~~~ s = s.concat("ef"); ~~~ s现在存储的是新生成的字符串对象的引用。 ![](https://box.kancloud.cn/2016-03-18_56eba2a974a24.jpg) 4.总结 一旦一个字符串在内存(堆)上创建,这个字符串就不会改变。我们应该注意到String类的所有方法都不会改变字符串本身,而是返回一个新的字符串。 如果我们需要一个可以改变的字符串,我们可以使用StringBuffer或者StringBuilder。否则,因为每次都是创建一个新的字符串。 原文链接:[Diagram to show Java String’s Immutability](http://www.programcreek.com/2009/02/diagram-to-show-java-strings-immutability/) 译文链接:[[图说Java]图说字符串的不变性](http://blog.csdn.net/sunnyyoona/article/details/50410801)