小白求解答
源码是这样的
public static Integer valueOf(int i) {
if (i >= IntegerCache.low && i <= IntegerCache.high)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}
我的理解是:如果传进来的参数是100,那么把100代入返回的代码则是
return IntegerCache.cache[100 + (-IntegerCache.-128)];
这样理解的话,那么返回的是cahce数组的下标[-28] , 则[-28]的下标对应的值就不是100;
请问这里返回值的代码为什么要这么写:return IntegerCache.cache[i + (-IntegerCache.low)];
请帮忙解答下,十分感谢。
数组是从0开始索引的
i-low相当于计算i与数组开始的距离
如果i==low,计算结果为0,对应访问数组第0项
对于你的问题,输入100且下限为-128的话,运算后得到的值为+288
有帮助望采纳