我有一个对象,我使用方法List
添加到theList.add(theObj)
。
如果我现在对此对象theObj
进行更改,这些更改是否会始终反映在列表中存储的对象中?
如果是,这是否意味着java中的List
只存储引用而不是它传递的对象的唯一副本?
答案 0 :(得分:11)
您不在列表中存储对象。您可以在列表中存储引用。
是的,如果您通过任何引用对对象进行更改,则该更改将是可见的,否则您将转到同一对象。
对于赋值,参数传递等也是如此:
StringBuilder builder = new StringBuilder();
StringBuilder builder2 = builder;
builder.append("foo");
System.out.println(builder2); // Prints foo
此处builder
和builder2
的值是对同一StringBuilder
对象的引用 - 因此通过builder
将字符串附加到对象中的数据,您可以通过builder2
获取相同的信息。
答案 1 :(得分:0)
如果是,这是否意味着List in java只存储引用而不是 它的唯一副本 通过?
好吧,如果你使用原语,它会复制一份。可能是字符串。