为什么它会以它的方式工作......(对我来说违反直觉)
测试.java:
public class Test {
public TestObject obj1;
public TestObject obj2;
public Test() {
obj1 = new TestObject();
obj1.setInt(1);
obj2 = obj1;
System.out.println("Should be the same: " + obj1.getInt() + ", " + obj2.getInt());
obj1.setInt(2);
System.out.println("Should be different? (2, 1): " + obj1.getInt() + ", " + obj2.getInt());
obj2.setInt(3);
System.out.println("Should be different? (2, 3): " + obj1.getInt() + ", " + obj2.getInt());
}
public static void main(String[] args) {
new Test();
}
}
测试对象.java
public class TestObject {
int integer;
public void setInt(int n) {
integer = n;
}
public int getInt() {
return integer;
}
}
这令人惊讶地导致“两个对象”发生变化,因此“int integer”是相同的。
从逻辑上讲(如果我的逻辑有意义的话),我会假设将一个对象设置为等于另一个对象将是一次性的事情,并且任何一个对象的任何更改都不会自动更改另一个对象。有没有我遗漏的东西,比如也许真的只有一个对象有两个引用?或者其他的东西... ?