【发布时间】:2019-12-25 16:59:17
【问题描述】:
如果这是一个明显的问题,我很抱歉,因为我是 Java 初学者。
String 对象是不可变的,这意味着它们无法更改。 所以如果你实例化:
String s = "hello";
然后改变s的内容,
s = "goodbye";
这是否意味着创建了一个新的 String 对象,也称为 s?原始变量 s 的值是否被更改?还是它的参考被改变了?提前感谢您,因为字符串不变性的概念让我感到困惑。
【问题讨论】:
-
它的引用更改为不同的字符串对象,是的。并且添加两个字符串文字涉及第三个字符串结果
-
String s1 = "java"; s1.concat(" rules");这样做。并尝试System.out.println(s1) -
这能回答你的问题吗? Is a Java string really immutable?
-
您混淆了变量和对象。变量有一个名字。物体没有。当您执行
s = "hello"时,您将对字符串对象“hello”的引用分配给名为s的变量。当您执行s = "goodbye"时,您将对另一个 字符串对象“hello”的引用分配给同一变量s。所以s引用了对象“hello”,现在引用了对象“goodbye”。该代码中从未修改过任何对象。您只需将两个不同的对象分配给一个变量。