public class AutoBoxingAndUnBoxing
{
public static void main(String[] args)
{
Integer x = 127;
Integer y = 127;
System.out.println(x == y);//true
Integer a = 128;
Integer b = 128;
System.out.println(a == b);//false
System.out.println(a); // prints 128
}
}
为什么x==y
为真且a==b
为假?如果它基于值(Integer -128 To 127
),那么'a'
应该打印-128
吗?
答案 0 :(得分:2)
比较Integer
个对象时,==
运算符可能仅适用于[-128,127]之间的数字。看看JLS:
如果框中的值p为true,false,则为字节或字符 范围\ u0000到\ u007f,或介于-128和127之间的int或短数字 (包括),然后让r1和r2成为任意两个拳击的结果 转换p。始终是r1 == r2。
的情况
由于您所比较的值不在上述范围内,因此除非您使用Integer#equals
,否则结果将评估为false
。