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
}
}
Run Code Online (Sandbox Code Playgroud)
怎么回事x==y是真的,a==b是假的?如果它是基于值(Integer -128 To 127)那么'a'应该打印-128正确吗?
比较Integer对象时,该==运算符可能仅适用于 [-128,127] 之间的数字。看看JLS:
如果装箱的值 p 是 true、false、一个字节或一个在 \u0000 到 \u007f 范围内的字符,或者是 -128 到 127(含)之间的 int 或短数字,则令 r1 和 r2 为以下结果p 的任意两个拳击转换。r1 == r2 的情况总是如此。
由于您要比较的值不在上述范围内,因此false除非您使用 ,否则结果将被评估为Integer#equals。
| 归档时间: |
|
| 查看次数: |
83 次 |
| 最近记录: |