class Main { public static void main(String[] args) { String s1 = "xy"; String s2 = s1; s1 = s1 + s2 + "z"; System.out.println(s1); System.out.println(s2); }}当我运行代码时,我期望得到这样的结果,因为 s1=s2 的值:xyxyzxyxyz但实际输出是:xyxyzxy我不确定为什么我没有得到相同的答案?是因为将 s1 更改为值“xyxyz”的代码行是在使 s1=s2 之后运行的吗?
3 回答
小唯快跑啊
TA贡献1863条经验 获得超2个赞
String s2 = s1;
这是一项任务,而不是永恒平等的指定。
该行的意思是,“当程序执行这一行时,将变量的值设置为与变量执行时包含的s2
值相同。”s1
以后对该变量的任何更改都s1
不会影响s2
. 这项任务只是暂时传递信息,仅此而已。
慕容3067478
TA贡献1773条经验 获得超3个赞
本质上,当您执行 s1 = s2 时,您并没有将这两个对象绑定到一个对象中,而是暂时使它们的值相同(这有点简化)。如果您要更改其中一个的值,则不会影响另一个的值。
想象一下有一个 .txt 文件。您可以在其中输入任何您想输入的内容,然后复制并粘贴它。然后,您返回原始文件并继续输入。尽管原始文件中的文本已更改,但副本文件中的文本并未更改。这与这里发生的情况基本相似。
添加回答
举报
0/150
提交
取消