复制代码
1
2
3
4
5
6
7
8
9Integer a=100; Integer b=100; Integer c=128; Integer d=128; System.out.println(a==b);//返回true; System.out.println(c==d);//返回false; System.out.println(a.equals(b));//返回true; System.out.println(c.equals(d));//返回true;
之所以100时返回true,而128时返回false,我们需要从源码中寻找答案。
Integer i =100实际在内部做了
Integer i = Integer.valueOf(100) 的操作。
可以看到low为-128,即if条件需要i在-128和127之间
而如果if条件不满足则返回new Integer(i),此时没有入缓存,也就是说不在 -128和127范围内的数它们的内存地址是不相同的,这也就解释了为什么 Integer c=128,d=128时候c==d返回false。
最后
以上就是妩媚舞蹈最近收集整理的关于integer a=128;integer b=128; a==b false的全部内容,更多相关integer内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复