Java中 arraylist.add() 添加进arraylist中的是引用还是赋值

看arraylist.add()的源码,感觉应该添加的是引用,但是怎么跟我的运行结果不一样呢,这是我的测试代码:ArrayList<Test>list=newArrayL... 看arraylist.add()的源码,感觉应该添加的是引用,但是怎么跟我的运行结果不一样呢,这是我的测试代码:
ArrayList<Test> list = new ArrayList<>();
for(int i=0;i<10;++i){
Test obj = new Test();
obj.a=i;
list.add(obj);
obj=null;
System.gc();
}
System.out.println(list);
}

Test.java代码 :
public class Test
{
public int a;
@Override
public String toString()
{
return ""+a;
}
}

为什么输出的是[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

arraylist.add()的源码是:
public boolean add(E e) {
ensureCapacityInternal(size + 1); // Increments modCount!!
elementData[size++] = e;
return true;
}
展开
 我来答
百度网友70ab7f7
2015-09-05 · 超过15用户采纳过TA的回答
知道答主
回答量:25
采纳率:0%
帮助的人:18.7万
展开全部
确实保存的是引用,你只是你将obj=null;是将obj赋值为空,引用本身没有变,你可以add后改变obj.a就很清楚了
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式