0

我有

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

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

4

4 回答 4

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.
于 2012-05-23T10:36:25.613 回答
2

是的,当然,因为它们都指的是同一个对象。

于 2012-05-23T10:36:57.640 回答
1

Its like - giving sc1 an additional name sc2.

于 2012-05-23T10:45:07.933 回答
0

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

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

但是,对引用本身的更改对其他人没有影响:

sc2 = null;
sc1.getField(); // still returns "hi!", no exception
于 2012-05-23T10:40:57.407 回答