加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 将两个arrayList引用到相同的对象

发布时间:2020-12-15 04:57:22 所属栏目:Java 来源:网络整理
导读:我有这个代码.但我不知道如何解释结果: ArrayListString first = new ArrayListString(); first.add("1"); first.add("2"); first.add("3"); ArrayListString second = new ArrayListString(); second = first; System.out.println("before modified:"+seco
我有这个代码.但我不知道如何解释结果:

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

我不知道的问题是:当你分配第一个=第二个;因此,第一个和第二个数组都将指向同一个对象(1,2和3).清除第二个数组上的所有元素后,第二个数组和这些对象之间的所有引用都将松散(此处没有问题).

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

请解释一下.

谢谢 :)

解决方法

通过指定second = first,只有一个具有两个引用的arraylist.参考文献是相同的.因此,当使用两个引用之一(第一个或第二个)调用clear时,将对引用的arraylist执行clear.

这是你最初想到的其他事情.不是这样,将第二个=首先分配给你添加到第一个字符串的所有字符串的引用都将被复制到一个新的ArrayList对象中,这将是魔术(在Java中).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读