Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java将对象添加到列表中,是否创建了新对象?_Java_Arrays_List - Fatal编程技术网

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

java将对象添加到列表中,是否创建了新对象?,java,arrays,list,Java,Arrays,List,假设我们有一个对象并将其添加到ArrayList中。java是创建新对象并将其添加到列表中,还是使用我们传入的同一对象并将其放入arraylist?它使用现有对象,实际上它使用它的引用,引用放在列表中。如果将引用保留在列表之外的另一个变量中,则可以对其进行编辑,并且该值也将在列表内部更改 public static void main(String[] args) { List<StringBuilder> list = new ArrayList<>();

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