我学到了当你在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,如果简单赋值不做任务?