请考虑以下代码:
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()
有什么用?
答案 0 :(得分:2)
identityHashCode()的JavaDoc说:
返回参数的整数哈希码。返回的哈希码与java.lang.Object.hashCode()方法返回的哈希码相同,无论对象的类是否覆盖了hashCode()。 null的哈希码是0。
简单地说:
如果您在班级中覆盖了hashCode()
方法,则调用identityHashCode()
将调用默认的hashCode()
方法,而不是您重写的方法。
答案 1 :(得分:1)