如何比较两个整数?

2022-09-01 07:10:54

我必须比较两个对象(不是)。比较它们的规范方法是什么?Integerint

Integer x = ...
Integer y = ...

我可以想到这个:

if (x == y) 

运算符仅比较引用,因此这仅适用于较低的整数值。但也许自动拳击开始了...?==

if (x.equals(y)) 

这看起来像是一个昂贵的操作。是否有任何以这种方式计算的哈希代码?

if (x.intValue() == y.intValue())

有点冗长...

编辑:感谢您的回复。虽然我现在知道该怎么做,但事实分布在所有现有的答案上(甚至是:)删除的答案),我真的不知道该接受哪一个。因此,我将接受最好的答案,它指的是所有三种比较可能性,或者至少是前两种。


答案 1

这就是 equals 方法的作用:

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

如您所见,没有哈希代码计算,但那里还发生了一些其他操作。虽然可能稍微快一些,但你正在进入微优化领域。另外,编译器无论如何都可以优化调用,尽管我不确定。x.intValue() == y.intValue()equals()

我一般会用原语,但如果我必须使用,我会坚持使用。intIntegerequals()


答案 2

使用该方法。你为什么这么担心它很贵?equals


推荐