链接:Integer参数传递问题_integer作为参数传递_站在风口的猪猪侠的博客-CSDN博客
可能很多朋友曾经都尝试拿integer 对象来当成形参,但明明是引用传递,修改integer的值,最后却没有成功。这是因为integer类里面传入的值如果不一样就会自动创建一个对象,且创建的对象的值为 final。以下是integer的部分源码
public static Integer valueOf(int i) { if (i >= IntegerCache.low && i <= IntegerCache.high) return IntegerCache.cache[i + (-IntegerCache.low)]; return new Integer(i); }
IntegerCache.low和IntegerCache.high分别是-128和127,输入的元素进来先判断是不是属于这区间,如果是这存入IntegerCache.cache[]数组中。如果不是则在堆中new一个integer对象给它。但是我不知道为什么不直接存入i,而是要存入i+128。希望有大神告知。
本文不用于任何商业目的,如有侵权请告知,立马删除。