将Integer与原语进行比较

时间:2013-11-29 07:52:46

标签: java integer equals long-integer

我没有java编译器,我想检查java对象与Integer对比与原语的比较。有人可以确认以下比较的结果是正确的:

Integer a = 500;
long b = 500;
a == b  //-> false
a.equals(b)  //-> true

通常情况下,在第一种比较中,java会Boxing吗,而在第二种Unboxing中会比较原始值吗?

1 个答案:

答案 0 :(得分:7)

查看我的结果

    Integer a = 500;
    long b = 500;
    System.out.println(a == b);
    System.out.println(a.equals(b));

输出

true
false

这是因为第一次比较使用了取消装箱

b == a.intValue()

产生true,因为在Java 500L中== 500是真的。

第二次比较使用拳击

a.equals(Long.valueOf(b))

这会产生错误,因为a和b是不同类的实例。请参阅Integer.equals impl:

public boolean equals(Object obj) {
    if (obj instanceof Integer) {
        return value == ((Integer)obj).intValue();
    }
    return false;
}