我知道 Java 中的 String 变量是不可变的,因此不能更改。
String myString = "Hello.";
myString += " ";
myString += "My name is Kevin";
每次我们向这个 String()
“添加”一些东西时,我们实际上是在创建一个新的 String()
,但是它与它的字符串同名正在连接。这是否意味着内存中有多个引用变量“myString”?
最佳答案
每次您使用 +=
“修改”/连接 String
时,您都在创建一个新的 String
对象并替换引用使用新创建的 String
命名为 myString
。所以不,内存中只有一个引用,但是引用指向的对象每次都在变化。字符串是不可变的,因此无法“就地”修改对象。
String is an immutable class in Java. An immutable class is simply a class whose instances cannot be modified. All information in an instance is initialized when the instance is created and the information can not be modified. There are many advantages of immutable classes.
有一个great answer on the Programmer's StackExchange解释 为什么 String
在 Java 中是不可变的,以及有关其具体工作原理的更多详细信息。
最好的方法是只使用 StringBuilder()
类:
String myStringBuilder = new StringBuilder("Hello.");
myStringBuilder.append(" ");
myStringBuilder.append("My name is Kevin");
System.out.println(myStringBuilder.toString());
但是,现代 Java 编译器会自动将 String
连接转换为 StringBuilder
操作。
关于java - 当你在 Java 中使用 "alter" "+="字符串时会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38280836/