为什么在 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
究竟是为什么呢?
如果两个引用指向相同的对象,它们在 ==
表达式中是相等的;如果两个引用指向不同的对象,尽管它们拥有相同的内容即值,在 ==
表达式中也是不相等的。
查看源码你就会发现,在Integer类的内部设置了缓存,为-128到127之间,所以只要在这个区间之间,就是同一对象,并没有创建新的对象。
鹤骨鸡肤的快感还能到昆明放牛归马;那得分更麻烦的摩纳哥