为何在 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