用Java分配类

时间:2012-05-23 10:35:27

标签: java

我有

  SomeClass sc1 = new SomeClass();
  SomeClass sc2 = sc1;

sc2会因sc1而改变(当sc1改变时)? 如果没有,该怎么做?

4 个答案:

答案 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)

sc2sc1是单独的变量,它们都包含引用到同一个对象(这是一个重要的区别!)。对象状态的任何更改都将通过两个引用同样可见。所以

sc2.setField("hi!");
sc1.getField(); // returns "hi!"

但是,对引用本身的更改对另一个没有影响:

sc2 = null;
sc1.getField(); // still returns "hi!", no exception