当前位置: 首页 > 面试题库 >

如何比较两个整数?

越心水
2023-03-14
问题内容

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

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

我可以想到:

if (x == y)

==运营商只比较基准,因此这将仅适用于较低的整数值的工作。但是也许自动装箱开始了…?

if (x.equals(y))

这看起来像一个昂贵的操作。是否以此方式计算出哈希码?

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

有点冗长…

编辑:
谢谢您的答复。尽管我现在知道该怎么办,但事实已分布在所有现有答案(甚至是已删除的答案)上,我也不知道该接受哪个答案。因此,我将接受最佳答案,即所有三种比较可能性,或者至少涉及前两种。


问题答案:

这是equals方法的作用:

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

如您所见,没有哈希码计算,但是这里还有其他一些操作。尽管x.intValue() == y.intValue()可能会稍快一些,但是您将在那里进入微优化领域。再加上编译器equals()仍然可以优化调用,尽管我不确定。

通常int,我会使用原语,但如果必须使用Integer,我会坚持使用equals()



 类似资料:
  • 问题内容: 我有两个。每个大小为100000。我想比较它们并计算匹配的元素。 这是我的代码: 在这里比较过程要花费很多时间。 如何解决和优化此问题。 问题答案: 您应该使用:返回一个包含collection1中所有元素的集合,这些元素也处于collection2中。

  • 比较三个整数变量是您可以轻松编写的最简单的程序之一。 在此程序中,您可以使用scanf()函数从用户获取输入,也可以在程序本身中静态定义。 我们希望它也是一个简单的程序。 我们将一个值与其余的两个值进行比较并检查结果,并对所有变量应用相同的过程。 对于此程序,所有值都应该是不同的(唯一的)。 算法 (Algorithm) 让我们首先看看比较三个整数的分步过程应该是什么 - START Ste

  • 比较两个整数变量是您可以轻松编写的最简单的程序之一。 在此程序中,您可以使用scanf()函数从用户获取输入,也可以在程序本身中静态定义。 我们希望它也是一个简单的程序。 我们只是比较两个整数变量。 我们首先看一下算法,然后是流程图,然后是伪代码和实现。 算法 (Algorithm) 让我们首先看看比较两个整数的分步过程应该是什么 - START Step 1 → Take two inte

  • 问题内容: 如何使用Python比较两个日期以查看稍后的日期? 例如,我想检查当前日期是否超过了我创建的假期日期列表中的最后日期,因此它将自动发送电子邮件,告诉管理员更新holiday.txt文件。 问题答案: 使用方法和运算符及其种类。

  • 问题内容: 我有两个从同一类实例化的java对象。 如果我将它们的两个属性都设置为完全相同的值,然后验证它们是否相同 但是,这些方法都不返回真实值。我已经检查了每个属性,并且它们匹配。 如何比较这两个对象以验证它们是否相同? 问题答案: 你需要提供自己的实现。 如果哈希表中有可能使用你的对象,则还应该重写。一个合理的实施将是该对象的字段的哈希码喜欢的东西结合起来:

  • 问题内容: 短篇小说:如何比较两个JSON块?下面的代码错误。 长话短说:我正在做一些E2E测试,其中一部分我需要将请求的JSON正文与接收到的JSON进行比较。为此,我尝试将期望的接收到的json解组到一个空接口(以避免任何类型错误),但出现错误: 。我猜编码/ json不喜欢空接口,所以问题是如何比较两个JSON块?字符串比较容易出错,因此我尝试避免这种情况。 问题答案: 您需要将指针传递给和