gpt4 book ai didi

java - 两个 arrayList 对相同对象的引用

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:35:16 24 4
gpt4 key购买 nike

我有这个代码。但我不知道如何解释结果:

ArrayList<String> first = new ArrayList<String>();
first.add("1");
first.add("2");
first.add("3");

ArrayList<String> second = new ArrayList<String>();
second = first;
System.out.println("before modified:"+second.size());
second.clear();
System.out.println("after modified:");
System.out.println(" First:"+first.size());
System.out.println(" Second:"+second.size());

结果将是:3/0/0

我不知道的问题是:当您分配 first = second; 时,第一个和第二个数组将指向同一个对象(1,2 和 3)。在您清除 第二个数组上的所有元素之后,第二个数组和这些对象之间的所有引用都将丢失(这里没有问题)。

我不知道的是:但是这些对象(1,2 和 3)仍然持有对第一个数组的引用。为什么第一个数组的大小是 0。

请为我解释一下。

谢谢:)

最佳答案

通过分配 second = first,只有一个数组列表有两个引用。引用资料是一样的。因此,当使用两个引用之一(firstsecond)调用 clear 时,将对引用的数组列表执行 clear。

这与您最初想象的不同。不是这样分配 second = first 您添加到第一个字符串的所有引用都将被复制到一个新的 ArrayList 对象中,这将是神奇的(在 Java 中)。

关于java - 两个 arrayList 对相同对象的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10119387/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com