java吧 关注:1,237,669贴子:12,709,946
  • 2回复贴,共1

为什么整型包装类Integer, 128以下可以直接比较,128以上不行?

取消只看楼主收藏回复

为什么128以下直接比较数值,128以上就变成比较对象了?
这是一个人为的设置吗?


1楼2017-02-04 11:42回复
    我擦,好坑啊,127以下其实也是比较对象,只不过返回了一个之前缓存的对象所以相等?
    public static Integer valueOf(int i) {
    assert IntegerCache.high >= 127;
    if (i >= IntegerCache.low && i <= IntegerCache.high)
    return IntegerCache.cache[i + (-IntegerCache.low)];
    return new Integer(i);
    }


    2楼2017-02-04 11:50
    回复
      那这样岂不是HashMap<Integer, Integer> hm = new HashMap<Integer, Integer>()里面的value相同的大于128的整型key也会算作不同对象?


      3楼2017-02-04 11:51
      收起回复