Java hashCode的默认实现是什么?

Java hashCode的默认实现是什么?,java,hashcode,Java,Hashcode,如果不重写hashCode方法,那么hashCode的默认实现是什么?则该类从其祖先继承hashCode。如果其中没有一个覆盖它,则使用 从: 只要是合理可行的,类对象定义的hashCode方法确实会为不同的对象返回不同的整数。(这通常通过将对象的内部地址转换为整数来实现,但JavaTM编程语言不需要这种实现技术。) 因此,默认实现是特定于JVM的对象 public native int hashCode() 这意味着它是在特定于平台的代码中实现的,并作为本机方法公开 相同的代码将是编译代码,不

如果不重写
hashCode
方法,那么
hashCode
的默认实现是什么?

则该类从其祖先继承
hashCode
。如果其中没有一个覆盖它,则使用

从:

只要是合理可行的,类对象定义的hashCode方法确实会为不同的对象返回不同的整数。(这通常通过将对象的内部地址转换为整数来实现,但JavaTM编程语言不需要这种实现技术。)

因此,默认实现是特定于JVM的对象

public native int hashCode()

这意味着它是在特定于平台的代码中实现的,并作为本机方法公开

相同的代码将是编译代码,不适用于ING JDK


这可能会提供更多信息。

默认情况下,未被重写的方法是从
对象继承的

如果查看该方法的文档,返回值是“
[…]不同对象的不同整数。(这通常通过将对象的内部地址转换为整数[…])
”。
java.lang.Object
中的方法被声明为本机方法,这意味着实现是由JVM提供的,并且可能因您的运行时环境而异

一个小例子:

Object o1 = new Object();
Object o2 = new Object();
System.out.println(o1.hashCode());
System.out.println(o2.hashCode());
打印(使用我的jdk6):

hashCode()
值的十六进制表示用于
toString()
的默认实现,顺便说一句:运行
System.out.println(o1)
打印如下内容

java.lang.Object@7a5e1077

谢谢,是的。
Object.hashCode()的实现看起来像什么?@JohnThreepwood这是一个实现细节,您需要为它编写JVM文档。关于默认实现,您可以阅读默认实现是特定于JVM的,但通常它返回
return Objects.hash(this.field1、this.field2、this.field3等)
java.lang.Object@7a5e1077