整数等于方法

时间:2012-12-20 11:46:10

标签: java hashcode

通常当你有一个对象时,如果两个哈希码相似,那么Equals方法等于另一个相同类型的对象。

Integer是否通过比较哈希码以相同的方式工作,还是以不同的方式工作?

4 个答案:

答案 0 :(得分:5)

如果检查Integer.java包装类的源代码,可以发现已重写equals方法以检查两个Integer对象是否具有相同的int值。

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

所以你可以说JDK比较对象内的整数值。

答案 1 :(得分:4)

具有相同哈希码的两个对象不必是equals()

equals()的两个对象必须具有相同的哈希码。

这基本上意味着您可能会遇到(偶尔)哈希码冲突。


Integer equals()方法只是将其包含的int值与其他Integer的{​​{1}}值进行比较。 Hashcodes不会进入它。


请注意,intequals()聚合并非严格必需,但是使用内部hashcode的众多JDK类依赖于它,例如各种Hashtable课程。

答案 2 :(得分:2)

Integer equals()方法将int值与==运算符进行比较,参见下面Integer.equals()方法的代码。

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

答案 3 :(得分:2)

为什么对你很重要?

Integer#equals检查两个int值是否相等,而不仅仅是引用。所以实际的Integer对象可能不同(不同的引用),但是等价。