将相同的对象添加到Java中的List

时间:2015-09-29 12:24:33

标签: java

为什么当我将相同的对象添加到列表中时:

Integer a = new Integer(0);
testList.add(a);
a += 1;
testList.add(a);

第一个没有改变?

2 个答案:

答案 0 :(得分:6)

因为Integer是不可变的。修改a引用的值时,您将创建一个新对象并更新对它的引用。 testList包含对两个对象的引用。

答案 1 :(得分:5)

由于Integer包装类在java中是不可变的。不仅Integer,所有包装类和String都是不可变的。

a是指向对象的引用。当您运行a += 1时,会重新分配a以引用具有不同值的新Integer对象。

您从未修改原始对象。