字符串的不变性
- 当我们new一个string的时候可以这样
String str = "abc";
这样堆里有个abc被str指向
- 我们再执行以下下面语句
String str1 = str;
现在堆里的abc同时被str和str1指向
- 最后我们执行
str = str+"de";
堆里:
str1指向abc
str本身会指向另一个string对象abcde
String本身是不能被更改的,如果有更改操作,String会自动new一个String对象出来满足程序要求
如果我们需要更改一个字符串,我们需要用到StringBuffer或者StringBuilder
否则我们会大量浪费GC(垃圾回收器)时间(用来回收没有引用的对象)。