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

Sha*_*ala 1 java storage reference list data-structures

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

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

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

Jon*_*eet 11

您不在列表中存储对象.您在列表中存储引用.

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

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

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

builder.append("foo");
System.out.println(builder2); // Prints foo
Run Code Online (Sandbox Code Playgroud)

这里的值builderbuilder2是对同一个StringBuilder对象的引用- 所以通过将一个字符串附加到对象中的数据builder,您可以通过它获得相同的信息builder2.