java将对象添加到列表中,是否创建了新对象



假设我们有一个对象,并将其添加到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]

最新更新