如果我有一个ArrayList,并且我添加了一个对象,后来我修改了这个对象,这个更改是否会反映在ArrayList中?或者当我将对象添加到ArrayList时,Java会创建一个副本并将其添加到ArrayList中吗?
如果我将对此对象的引用更改为null,该怎么办?这是否意味着ArrayList中的对象现在也为null?
aio*_*obe 76
这个变化会反映在ArrayList中吗?
是的,因为您添加了对列表中对象的引用.您添加的引用仍将指向同一个对象(您修改过的对象).
或者当我将对象添加到ArrayList时,Java会创建一个副本并将其添加到ArrayList中吗?
不,它不会复制对象.(它将复制对象的引用.)
如果我将对此对象的引用更改为null,该怎么办?这是否意味着ArrayList中的对象现在也为null?
不,因为在添加到列表时复制了原始引用的内容.(请记住,它是复制的引用,而不是对象.)
示范:
StringBuffer sb = new StringBuffer("foo");
List<StringBuffer> list = new ArrayList<StringBuffer>();
list.add(sb);
System.out.println(list); // prints [foo]
sb.append("bar");
System.out.println(list); // prints [foobar]
sb = null;
System.out.println(list); // still prints [foobar]
Run Code Online (Sandbox Code Playgroud)