なぜこれがそのように機能するのですか...(私にとっては直感に反します)
テスト.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();
}
}
TestObject.java
public class TestObject {
int integer;
public void setInt(int n) {
integer = n;
}
public int getInt() {
return integer;
}
}
これにより、驚くべきことに、「int integer」が同じになるように「両方のオブジェクト」が変更されます。
論理的に (私の論理が理にかなっている場合)、あるオブジェクトを別のオブジェクトと等しく設定するのは 1 回限りであり、いずれかのオブジェクトを変更しても自動的に他方が変更されることはないと想定します。2 つの参照を持つオブジェクトが実際には 1 つしかないなど、私が見逃しているものはありますか? か何か... ?