为了账号安全,请及时绑定邮箱和手机立即绑定

即使 s2=s1,为什么在第二行代码中打印“xy”?

即使 s2=s1,为什么在第二行代码中打印“xy”?

守着一只汪 2023-07-28 10:18:26
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 回答

?
RISEBY

TA贡献1856条经验 获得超5个赞

JavaString是不可变的。当您重新分配时s1,您将创建一个现在引用的新Strings1s2仍然引用原始字符串。



查看完整回答
反对 回复 2023-07-28
?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

String s2 = s1;这是一项任务,而不是永恒平等的指定。

该行的意思是,“当程序执行这一行时,将变量的值设置为与变量执行时包含的s2值相同。”s1

以后对该变量的任何更改都s1不会影响s2. 这项任务只是暂时传递信息,仅此而已。


查看完整回答
反对 回复 2023-07-28
?
慕容3067478

TA贡献1773条经验 获得超3个赞

本质上,当您执行 s1 = s2 时,您并没有将这两个对象绑定到一个对象中,而是暂时使它们的值相同(这有点简化)。如果您要更改其中一个的值,则不会影响另一个的值。

想象一下有一个 .txt 文件。您可以在其中输入任何您想输入的内容,然后复制并粘贴它。然后,您返回原始文件并继续输入。尽管原始文件中的文本已更改,但副本文件中的文本并未更改。这与这里发生的情况基本相似。


查看完整回答
反对 回复 2023-07-28
  • 3 回答
  • 0 关注
  • 101 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信