m0_54552804 2021-08-17 22:27 采纳率: 50%
浏览 32

java包装类Integer缓存问题

小白求解答

源码是这样的
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)];

请帮忙解答下,十分感谢。

  • 写回答

1条回答 默认 最新

  • Pliosauroidea 2021-08-18 02:37
    关注

    数组是从0开始索引的
    i-low相当于计算i与数组开始的距离
    如果i==low,计算结果为0,对应访问数组第0项
    对于你的问题,输入100且下限为-128的话,运算后得到的值为+288
    有帮助望采纳

    评论

报告相同问题?

问题事件

  • 创建了问题 8月17日

悬赏问题

  • ¥15 矩阵加法的规则是两个矩阵中对应位置的数的绝对值进行加和
  • ¥15 活动选择题。最多可以参加几个项目?
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)
  • ¥20 怎么在stm32门禁成品上增加查询记录功能
  • ¥15 Source insight编写代码后使用CCS5.2版本import之后,代码跳到注释行里面
  • ¥50 NT4.0系统 STOP:0X0000007B
  • ¥15 想问一下stata17中这段代码哪里有问题呀