假设我们有一个对象,并将其添加到ArrayList中。java是创建一个新对象并将其添加到列表中,还是使用我们传入的同一对象并将它放入arraylist中?
它使用现有的对象,实际上它使用它的引用,引用被放在列表中。如果在列表外的另一个变量中保留引用,则可以对其进行编辑,并且该值也将在列表内更改。
public static void main(String[] args) {
List<StringBuilder> list = new ArrayList<>();
StringBuilder str1 = new StringBuilder("foo");
StringBuilder str2 = new StringBuilder("bar");
list.add(str1);
list.add(str2);
str1.append(" baz");
System.out.println(str1);
System.out.println(list);
}
这段代码会让你知道这一点,因为这是输出
foo baz
[foo baz, bar]