2012-05-23 51 views
0

分配类我有在Java中

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

将SC2由于SC1(SC1时改变)变化? 如果不是,该怎么办?

+1

你可能试过 –

回答

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. 
2

是淡然的,他们都提到同一个对象。

0

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

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

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

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

它像 - 让SC1的其他名称SC2。