2012-01-16 87 views
2

簡單的問題,Java中的列表是否通過值或引用來保存對象?如果我將一個對象放在一個列表中,稍後改變它的一個值,列表中的那個將會有更新的值嗎?Java - 列表中的對象是否由值或引用保存?

+0

一個對象本身。 *從不*在轉讓或傳遞給方法時隱式複製/克隆/重複。 – 2012-01-16 03:06:04

回答

7

通過值或引用在Java保持對象中執行列表?

列表是一個包含對象引用的有序集合。

如果我把一個對象放在一個列表中,然後改變它的一個值,那麼列表中的那個將會有更新的值嗎?

您只能更改/更新mutable對象。您無法通過其引用更新不可變的(例如List<String>)對象。

0

很明顯,通過引用,就像任何Java對象的自定義一樣,除非您有意克隆該對象,並將該副本放入列表中。

+0

然後它是對副本的引用。 – 2012-01-16 03:05:20

+0

當然。如果你改變*那個*項目,你仍然會改變列表的內容。但克隆和傳球通常是爲了在沒有改變的情況下留下副本。 – 2012-01-16 08:49:30

+0

我的觀點是,「將副本放入列表中」模糊了OP正試圖弄清楚的值與參考之間的區別,就這些了。 – 2012-01-16 10:03:49

2

所有對象都是通過在java中引用的幫助。一份清單由參考資料保存。其中的對象由參考保存。因此,如果稍後更改值,它將顯示更新的值。

0

用戶定義的數據類型總是通過引用傳遞,如果你的代碼中定義了一些類的變量列表,他們都通過引用

2

是的,他們都通過引用存儲存儲。如果要檢索該值,請通過實現Cloneable接口來克隆該對象並實現自己的克隆方法。

相關問題