你从集合中拿出的Integer已经被转化成字面量了,你把它赋值给某个变量,完了修改该变量是一直在修改字面量。所以并不会影响集合内的元素。
但是你存的对象,其实只是一个引用,从集合中拿出来该对象的引用,修改它的属性的时候因为它和集合中的引用指向的是同一个堆地址,所以就相当于修改了集合里面对象的属性。
但是你存的对象,其实只是一个引用,从集合中拿出来该对象的引用,修改它的属性的时候因为它和集合中的引用指向的是同一个堆地址,所以就相当于修改了集合里面对象的属性。
public class A {public int i = 0;}
当你这样做:
A a = new A(); a.i = 10;
的时候,你没有改变 a 的值,你只是改变了 a 的成员 i 的值。