2012-05-23 85 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。