hashCode()和identityHashCode()的相同输出

时间:2014-09-15 08:31:11

标签: java hashcode

请考虑以下代码:

public class MyClass {

    public static void main(String[] args) {
        Object obj = new Object();
        System.out.println(obj.hashCode());
        System.out.println(System.identityHashCode(obj));
        }
}

输出:

328332828
328332828

那么使用hashCode()identityHashCode()有什么用?

2 个答案:

答案 0 :(得分:2)

identityHashCode()的JavaDoc说:

返回参数的整数哈希码。返回的哈希码与java.lang.Object.hashCode()方法返回的哈希码相同,无论对象的类是否覆盖了hashCode()。 null的哈希码是0。

简单地说:

如果您在班级中覆盖了hashCode()方法,则调用identityHashCode()将调用默认的hashCode()方法,而不是您重写的方法。

答案 1 :(得分:1)

  • hashCode 可重写
  • identityHashCode 是默认(未覆盖)功能