2016-11-05 64 views
0

我的問題是,使用Java有可能具有諸如樹的集合。將樹中的節點保存到變量中。這將是明智的對象地址(在我的理解中),這意味着使用本地變量更改節點中的數據也會更改集合中的數據?使用局部變量更改集合中的值

+1

爲什麼你不測試它?但是,是的,如果您有兩個對同一對象的引用,則使用一個引用更改唯一對象的狀態會改變它,而另一個引用仍將指向相同的已修改對象。 –

回答

0

局部變量保存到節點的引用,所以在局部變量確實會改變它所引用的對象的數據,在這種情況下不斷變化的數據在你的樹的節點也將被改變,因爲它是同一個對象。

問候

亞歷

0

答案是有點兒。假設你有變量var,它的地址存儲在集合things中。然後,如果您執行以下操作:var = some_var,集合中的數據不會更改。這是因爲你正在覆蓋賦值中var的地址。但是,如果你想以某種方式修改var,兩者都會改變。發生這種情況是因爲地址保持不變,因此您仍在寫入正確的內存。例如var.field = some_data將修改things[var].field

由於這個原因,將var的副本加載到things通常是一種很好的做法,通過這樣做我們不會讓他們意外連接。人們經常會在沒有意識到的情況下將事情連接起來,然後修改變量而不知道集合也發生了變化。