我有
SomeClass sc1 = new SomeClass();
SomeClass sc2 = sc1;
sc2会因sc1而改变(当sc1改变时)? 如果没有,该怎么做?
答案 0 :(得分:2)
是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.
答案 1 :(得分:2)
当然是的,因为它们都指的是同一个对象。
答案 2 :(得分:1)
就像 - 给sc1一个额外的名字sc2。
答案 3 :(得分:0)
sc2
和sc1
是单独的变量,它们都包含引用到同一个对象(这是一个重要的区别!)。对象状态的任何更改都将通过两个引用同样可见。所以
sc2.setField("hi!");
sc1.getField(); // returns "hi!"
但是,对引用本身的更改对另一个没有影响:
sc2 = null;
sc1.getField(); // still returns "hi!", no exception