我了解到,当您在 Java 中修改变量时,它不会更改它所基于的变量
int a = new Integer(5);
int b = a;
b = b + b;
System.out.println(a); // 5 as expected
System.out.println(b); // 10 as expected
我假设对象也有类似的情况。考虑这个类。
public class SomeObject {
public String text;
public SomeObject(String text) {
this.setText(text);
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
}
尝试此代码后,我感到困惑。
SomeObject s1 = new SomeObject("first");
SomeObject s2 = s1;
s2.setText("second");
System.out.println(s1.getText()); // second as UNexpected
System.out.println(s2.getText()); // second as expected
请向我解释为什么更改任何对象都会影响另一个对象。我知道变量文本的值存储在两个对象的内存中的相同位置。
为什么变量的值是独立的但与对象相关?
另外,如果简单的分配不能完成这项工作,如何复制 SomeObject?