为什么Integer a=100,b=100时候a==b返回true,而Integer c=1000,d=1000时候c==d返回false

Integer a=100 实际上是执行了 Integer i=Integer.valueOf(100)的操作,Integer类型的范围是-128~127,当满足条件时会放入缓存空间中。

  public static Integer valueOf(int i) {
        if (i >= IntegerCache.low && i <= IntegerCache.high)
            return IntegerCache.cache[i + (-IntegerCache.low)];
        return new Integer(i);
    }

而c=1000不在-128~127的范围内,则会开辟新的内存地址。所以c==d返回为false。

posted @ 2019-09-26 13:43  hongdalin  阅读(1754)  评论(0)    收藏  举报