【发布时间】:2019-11-12 05:10:28
【问题描述】:
我无法理解为什么 String 不像对象那样工作,以至于当您更改它时,分配给它的变量也会更改。
我尝试创建一个字符串数组,然后将一个元素的引用分配给一个变量(我说引用是因为据我了解 Java 是按值传递,而内存引用是那个“值”)
当我更改 String 元素时,变量不会反映更改。
String[] arr={"abc","def"};
String s=arr[1];
arr[1]+="123r";
for (String i:arr) {System.out.print(i);}
System.out.println(); // prints "abcdef123r"
System.out.println(s); //prints "def"
也许,根据我一直在阅读的内容,赋值运算符不适用于字符串。
【问题讨论】:
-
String 不像对象那样工作,因此当您更改它时,分配给它的 var 也会更改:字符串是对象,并且与任何对象的工作方式完全相同其他对象。
arr[1] +="123r"不会“改变对象”。它等价于 `arr[1] = arr[1] + "123r",即它创建一个新的 String 对象,并将新的 String 对象存储在数组中,索引为 1。 -
嗯,所以赋值运算符确实没有按预期工作