概述
Integer integer = 127;
Integer integer2 = 127;
System.out.println(integer == integer2); //ture
Integer integer = 128;
Integer integer2 = 128;
System.out.println(integer == integer2); //false
原因在于Integer类中有一个静态内部类IngeterCache,里面定义了一个Integer[],虚拟机初始化Integer类时默认从-128到127的Integer类型的对象都初始化到这个数组里了,只要是在-128到127的Integer类型的对象都是从这个数组中获取的,所以用“==”判断是true,超出这个范围会重新new一个Integer类型的对象,用“==”判断是false。
Byte、Short、Integer、Long包装类型都是类似设计,Character包装类也是类似设计,不同的是Character中数组的封装范围从0到127。
注意:Integer类型对象判断相等不是用“==”而是用equalse()方法。
最后
以上就是火星上吐司为你收集整理的java中Integer判断相等==大坑的全部内容,希望文章能够帮你解决java中Integer判断相等==大坑所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复