【发布时间】:2010-12-24 20:02:31
【问题描述】:
我必须比较两个Integer 对象(不是int)。比较它们的规范方法是什么?
Integer x = ...
Integer y = ...
我能想到这个:
if (x == y)
== 运算符仅比较引用,因此这仅适用于较小的整数值。但也许自动装箱会开始......?
if (x.equals(y))
这看起来像是一项昂贵的操作。有没有这样计算的哈希码?
if (x.intValue() == y.intValue())
有点冗长...
编辑:感谢您的回复。尽管我现在知道该做什么,但事实分布在所有现有答案(甚至已删除的答案上:)),我真的不知道该接受哪一个。所以我会接受最好的答案,它指的是所有三种比较可能性,或者至少是前两种。
【问题讨论】:
-
你不应该首先使用 Integer x = ... ,而是使用 int x = ... 。
-
这只是显示 x 和 y 类型的示例。实际上,这些值来自不能使用 int 的 List
。 -
我可以把你比作夏日吗?
-
@starblue:原始包装类的存在是出于(非常好的)原因。 “你一开始就不应该使用 Integer x = ...” 听起来是误导。
-
包装器用于将整数对象放入数据结构中,而不是用于包含单个整数的变量。
标签: java comparison object-comparison