【发布时间】:2016-11-11 20:37:51
【问题描述】:
我了解 Java 中的 String 变量是不可变的,因此无法更改。
String myString = "Hello.";
myString += " ";
myString += "My name is Kevin";
每次我们向这个String()“添加”一些东西时,我们实际上是在创建一个新的String(),但它与它所连接的字符串具有相同的名称。这是否意味着内存中有多个引用变量“myString”?
【问题讨论】:
-
您误解了引用与其引用的实际对象之间的区别。连接时,引用只是指向新创建的字符串对象。
-
你所谓的name其实就是一个variable。对象和引用没有名称。一个变量可以在不同的时间引用不同的对象,不同的变量可以引用同一个对象——这就是所谓的aliasing。
标签: java string performance memory concatenation