2016-11-05 63 views
0

我的问题是,使用Java有可能具有诸如树的集合。将树中的节点保存到变量中。这将是明智的对象地址(在我的理解中),这意味着使用本地变量更改节点中的数据也会更改集合中的数据?使用局部变量更改集合中的值

+1

为什么你不测试它?但是,是的,如果您有两个对同一对象的引用,则使用一个引用更改唯一对象的状态会改变它,而另一个引用仍将指向相同的已修改对象。 –

回答

0

局部变量保存到节点的引用,所以在局部变量确实会改变它所引用的对象的数据,在这种情况下不断变化的数据在你的树的节点也将被改变,因为它是同一个对象。

问候

亚历

0

答案是有点儿。假设你有变量var,它的地址存储在集合things中。然后,如果您执行以下操作:var = some_var,集合中的数据不会更改。这是因为你正在覆盖赋值中var的地址。但是,如果你想以某种方式修改var,两者都会改变。发生这种情况是因为地址保持不变,因此您仍在写入正确的内存。例如var.field = some_data将修改things[var].field

由于这个原因,将var的副本加载到things通常是一种很好的做法,通过这样做我们不会让他们意外连接。人们经常会在没有意识到的情况下将事情连接起来,然后修改变量而不知道集合也发生了变化。