繁体   English   中英

将Integer与原语进行比较

[英]Compare Integer with primitive

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

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

通常,在第一种比较类型的Java中, Boxing和在第二种Unboxing Boxing中对原始值进行比较是真的吗?

看我的结果

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

产量

true
false

这是因为第一次比较使用拆箱

b == a.intValue()

产生真实,因为在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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM