为什么在Java中比较IntegerWrappers时128=128为false,而127=127为真?class D {
public static void main(String args[]) {
Integer b2=128;
Integer b3=128;
System.out.println(b2==b3);
}}产出:falseclass D {
public static void main(String args[]) {
Integer b2=127;
Integer b3=127;
System.out.println(b2==b3);
}}产出:true注:-128至127之间的数字为真。
3 回答
慕斯王
TA贡献1864条经验 获得超2个赞
I
Integer b2 =Integer.valueOf(127)
valueOf
public static Integer valueOf(int i) { if(i >= -128 && i <= IntegerCache.high) return IntegerCache.cache[i + 128]; else return new Integer(i);}
high
-Djava.lang.Integer.IntegerCache.High=999
.equals()
b2.equals(b3)
通过缓存频繁请求的值,此方法可能获得更好的空间和时间性能。此方法将始终将值缓存在范围-128至127(包括在内),并可能缓存此范围之外的其他值。
哈士奇WWW
TA贡献1799条经验 获得超6个赞
b2.equals(b1)
添加回答
举报
0/150
提交
取消