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