将对象存储在列表中,然后对对象进行更改

时间:2011-04-08 10:34:42

标签: java list data-structures reference storage

我有一个对象,我使用方法List添加到theList.add(theObj)

如果我现在对此对象theObj进行更改,这些更改是否会始终反映在列表中存储的对象中?

如果是,这是否意味着java中的List只存储引用而不是它传递的对象的唯一副本?

2 个答案:

答案 0 :(得分:11)

您不在列表中存储对象。您可以在列表中存储引用

是的,如果您通过任何引用对对象进行更改,则该更改将是可见的,否则您将转到同一对象。

对于赋值,参数传递等也是如此:

StringBuilder builder = new StringBuilder();
StringBuilder builder2 = builder;

builder.append("foo");
System.out.println(builder2); // Prints foo

此处builderbuilder2的值是对同一StringBuilder对象的引用 - 因此通过builder将字符串附加到对象中的数据,您可以通过builder2获取相同的信息。

答案 1 :(得分:0)

  

如果是,这是否意味着List in   java只存储引用而不是   它的唯一副本   通过?

好吧,如果你使用原语,它会复制一份。可能是字符串。