关于integer的用法

流年啊你奈我何2015 发布于 2016/05/05 10:20
阅读 204
收藏 1
Integer a=1;
Integer b=1;
Integer c=200;
Integer d=200;

System.out.println(a==b);   true

System.out.println(c==d);  false

为什么两者出输出的值不一样?求大神解答

加载中
3
白眼狼
JVM会自动维护八种基本类型的常量池,int常量池中初始化-128~127的范围,也就是闭区间【-128,127】,初始化这个区间的数值会直接调用同一地址,超出数值部分重新创建,==是判断引用地址的,引用地址不一,所以返回false
流年啊你奈我何2015
流年啊你奈我何2015
回复 @Kiss_ : 嗯呢,大神
Fly_f
Fly_f
说的很好
0
Mr_K
Mr_K

引用来自“白眼狼”的评论

JVM会自动维护八种基本类型的常量池,int常量池中初始化-128~127的范围,也就是闭区间【-128,127】,初始化这个区间的数值会直接调用同一地址,超出数值部分重新创建,==是判断引用地址的,引用地址不一,所以返回false
+1 正解
0
w
whc321
Integer的比较大小    a.intValue() == b..intValue()  转成int来比较就行了
返回顶部
顶部