整数包装类和 == 运算符 - 在哪里指定行为? [英] Integer wrapper class and == operator - where is behavior specified?
本文介绍了整数包装类和 == 运算符 - 在哪里指定行为?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
Integer integer1 = 127;
Integer integer2 = 127;
System.out.println(integer1 == integer2);//true
integer1 = 128;
integer2 = 128;
System.out.println(integer1 == integer2);//false
我发现它在 -128 - 127
范围内返回 ==(如果是),为什么会有这样的规范?
I found it returns == (if it is) under the range of -128 - 127
, why is there such specification ?
推荐答案
public static Integer valueOf(int i) {
if(i >= -128 && i <= IntegerCache.high)
return IntegerCache.cache[i + 128];
else
return new Integer(i);
}
说明:
Integer integer1 = 127
是 Integer integer1 = Integer.valueOf(127)
的快捷方式,对于 -128 和 127(含)之间的值,整数是放入缓存并多次返回,而更高和更低的数字每次都会生成新的整数.
Integer integer1 = 127
is a shortcut for Integer integer1 = Integer.valueOf(127)
, and for values between -128 and 127 (inclusive), the Integers are put in a cache and returned multiple times, while higher and lower numbers generate new Integers each time.
这篇关于整数包装类和 == 运算符 - 在哪里指定行为?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文