概述
Integer 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 a=128;integer b=128; a==b false所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复