gpt4 book ai didi

java - 引用同一字符串对象的两个 java 变量不同步

转载 作者:行者123 更新时间:2023-12-01 18:08:19 25 4
gpt4 key购买 nike

从我对 Java 对象的新手的角度来看,如果两个变量引用一个对象,则更新一个变量应该对另一个变量执行相同的操作,如下代码所示:

SomeObject s1 = new SomeObject("first");
SomeObject s2 = s1;
s2.setText("second");
System.out.println(s1.getText()); // print second
System.out.println(s2.getText()); // print second as well

我引用了这个thread中的代码.

但是,这不适用于 String 类。请参阅下面的代码:

String s_1 = new String("first");
String s_2 = s_1;
s_2 = "second";
System.out.println("s_1: " + s_1 + " s_2: " + s_2);
//s_1 appears to be "first" and s_2 "second"

这是因为String类和自声明类的区别吗?感谢您的帮助!

最佳答案

不,区别在于您所做的更改类型。

这段代码:

s2.setText("second")

不会更改 s2s1 的值。 s1s2 与之前一样引用同一个对象...但对象的内容已更改。

将其与此代码进行比较:

s_2 = "second";

此处,您将 s2 的值更改为对不同对象的引用。更改 s_2 的值根本不会更改 s_1 的值 - 它仍然引用之前的同一个对象。

您可能想阅读 the differences between variables, objects and references - 一旦你脑子里清楚了这一点,其他一切都会变得更有意义。

关于java - 引用同一字符串对象的两个 java 变量不同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34706501/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com