为什么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。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM