我有
SomeClass sc1 = new SomeClass();
SomeClass sc2 = sc1;
sc2会因为sc1而改变(当sc1改变时)?如果没有,怎么办?
是的,任何更改sc1
都将反映sc2
为指向同一个对象的两个点。
所以说如果这是结构SomeClass
public SomeClass {
String name;
//getter setter
}
如果你这样做
SomeClass sc1 = new SomeClass();
SomeClass sc2 = sc1;
sc1.setName("Hello");
System.out.println(sc2.getName()); // this will print hello since both sc1 and sc2 are pointing to the same object.
但如果你这样做:
sc1.setName("Hello");
sc1 = null;
System.out.println(sc2.getName()); // this will print hello since only sc1 is null not sc2.
是的,当然,因为它们都指的是同一个对象。
Its like - giving sc1 an additional name sc2.
sc2
并且sc1
是单独的变量,它们都包含对同一对象的引用(这是一个重要的区别!)。对对象状态的任何更改都将通过两个引用同样可见。所以
sc2.setField("hi!");
sc1.getField(); // returns "hi!"
但是,对引用本身的更改对其他人没有影响:
sc2 = null;
sc1.getField(); // still returns "hi!", no exception