我是靠谱客的博主 火星上吐司,这篇文章主要介绍java中Integer判断相等==大坑,现在分享给大家,希望可以做个参考。

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判断相等==大坑内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(163)

评论列表共有 0 条评论

立即
投稿
返回
顶部