本来出问题,我觉得应该是 == 不能使用,关于这边是自动装箱 这一类问题。
本质上也是 Integer == Integer ,
但是问题在于,为什么 前两个 41 是指向同一个 integer 类。
而后面不是呢??
摘:
因为,你现在用的是Integer == Integer而不是int == int
这个时候,比较的是两个java.lang.Integer,看他的源码,你会发现,它会缓存[-128, +127] 这点Integer对象,供Integer.valueOf方法使用,而你之前调用AddList.add(i);removeList.add(i);的时候,自动将int i封箱成Integer,就是通过这个Integer.valueOf方法,所以,你10-120这几个数字,两个list保存的是同一个对象,所以IntegerInteger返回true,而130开始,超过默认的缓存范围,两边放的是不同的Integer对象,IntegerInteger返回false
还是需要静下心去看源码啊