为何在 Java 中128==128返回false,而127==127返回true呢?

为何在 Java 中128==128返回false,而127==127返回true呢?缓存

有这样一段代码微信

 

     Integer a=127; Integer b=127; System.out.println(a==b); Integer c=128; Integer d=128; System.out.println(c==d);

 

运行结果为:学习

true
false

到底是为何呢?spa

若是两个引用指向相同的对象,它们在 == 表达式中是相等的;若是两个引用指向不一样的对象,尽管它们拥有相同的内容即值,在 == 表达式中也是不相等的。code

查看源码你就会发现,在Integer类的内部设置了缓存,为-128到127之间,因此只要在这个区间之间,就是同一对象,并无建立新的对象对象

 

欢迎添加本人微信,带你加入Java学习交流群,还有学习资料等你获取。blog

相关文章
相关标签/搜索