“哈希码”的默认实现是什么?
如果不重写该方法,则 的默认实现是什么?hashCode
hashCode
然后,此类继承自其祖先之一。如果它们中没有一个覆盖它,则使用Object.hashCode。hashCode
从文档中:
尽管合理实用,但由类 Object 定义的 hashCode 方法确实为不同的对象返回不同的整数。(这通常是通过将对象的内部地址转换为整数来实现的,但 JavaTM 编程语言不需要这种实现技术。
因此,默认实现是特定于 JVM 的
默认情况下,未重写的方法继承自 。Object
如果查看该方法的文档,则返回值为 “”。中的方法被声明为本机,这意味着实现由 JVM 提供,并且可能因运行时环境而异。[...] distinct integers for distinct objects. (This is typically implemented by converting the internal address of the object into an integer [...])
java.lang.Object
一个小例子:
Object o1 = new Object();
Object o2 = new Object();
System.out.println(o1.hashCode());
System.out.println(o2.hashCode());
打印(使用我的jdk6):
1660187542
516992923
顺便说一句,值的十六进制表示形式用于默认实现:运行打印类似于hashCode()
toString()
System.out.println(o1)
java.lang.Object@7a5e1077