我的代码是:
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
,因此这是预期的行为。