我的代码是:

String str = "Hello";
String str1;
str1 = str;
str1 = str1 + " World";
System.out.println(str1);
System.out.println(str);


我得到的输出是:

Hello World
Hello


在两种情况下,我期望的输出都是Hello World,因为根据我对str1 = str的理解,两个对象都引用相同的位置,因此,如果我更改一个对象的内容,那么其他对象也将受到影响。

那么,str1 = str1 + " World";是否在不同的内存位置上创建一个新的字符串对象?

最佳答案

字符串是不可变的。当您执行str1 = str1 + " World";时,您将创建一个全新的String并更新str1对其的引用。您永远不会重新分配str,因此这是预期的行为。

10-05 18:15
查看更多