为什么当我将相同的对象添加到列表中时:
Integer a = new Integer(0);
testList.add(a);
a += 1;
testList.add(a);
第一个没有改变?
答案 0 :(得分:6)
因为Integer
是不可变的。修改a
引用的值时,您将创建一个新对象并更新对它的引用。 testList
包含对两个对象的引用。
答案 1 :(得分:5)
由于Integer
包装类在java中是不可变的。不仅Integer
,所有包装类和String
都是不可变的。
a
是指向对象的引用。当您运行a += 1
时,会重新分配a
以引用具有不同值的新Integer对象。
您从未修改原始对象。