2014-03-06 36 views
1

對於以下的代碼:存儲相同的對象在不同陣列

User myUser = new User(); 
User[] array1 = new User[10]; 
User[] array2 = new User[10]; 
array1[5] = myUser; 
array2[5] = myUser; 

存儲在對象MYUSER兩次,或者是僅存儲在每個對象的對象的地址?

也做,如果我開始瞎搞與像變量,這仍然成立:

temp = myUser; 
array2[4] = temp; 

另外,如果我做出改變,以MYUSER在一個陣列,它使換向等陣列?

編輯:最後一個問題如何將它存儲的價值而不是參考?

+0

可能重複[在Java中複製對象](http://stackoverflow.com/questions/12072727/duplicating-objects-in-java) –

回答

3

是的,只有對User對象的引用存儲在數組中。每個參考點指向同一個對象。通過任一數組修改對象將修改同一個對象。

這同樣適用於將變量存儲在變量中,如第二個示例中所示。

只有primitive types按值存儲,例如, int,boolean,char。請注意,它們也具有相應的參考類型,例如,對於int你有Integer

+0

偉大的它只存儲一次。最後一個問題是如何避免這種情況發生。即它存儲的值而不是 –

+2

Object.clone()? –

+0

通過value(在數組和集合中)存儲的唯一東西是基元:ints,布爾值,字符等。 – aliteralmind

相關問題