programing

`hashCode`의 기본 구현은 무엇입니까?

goodcopy 2021. 1. 15. 19:17
반응형

`hashCode`의 기본 구현은 무엇입니까?


hashCode메서드를 재정의하지 않는 경우 기본 구현은 hashCode무엇입니까?


그런 다음이 클래스는 hashCode조상 중 하나에서 상속 됩니다. 이들 중 어느 것도 재정의하지 않으면 Object.hashCode 가 사용됩니다.

로부터 문서 :

합리적으로 실용적인만큼 Object 클래스에 의해 정의 된 hashCode 메서드는 고유 한 개체에 대해 고유 한 정수를 반환합니다. (이것은 일반적으로 객체의 내부 주소를 정수로 변환하여 구현되지만 JavaTM 프로그래밍 언어에서는이 구현 기술이 필요하지 않습니다.)

따라서 기본 구현은 JVM에 따라 다릅니다.


기본적으로 재정의되지 않은 메서드는에서 상속됩니다 Object.

해당 메서드의 설명서를 보면 반환 값은 " [...] distinct integers for distinct objects. (This is typically implemented by converting the internal address of the object into an integer [...])"입니다. 의 메서드 java.lang.Object는 네이티브로 선언되어 구현이 JVM에서 제공되며 런타임 환경에 따라 달라질 수 있습니다.

작은 예 :

Object o1 = new Object();
Object o2 = new Object();
System.out.println(o1.hashCode());
System.out.println(o2.hashCode());

인쇄 (내 jdk6 사용) :

1660187542
516992923

hashCode()의 16 진수 표현은 기본 구현에서 사용됩니다 toString(). 실행 System.out.println(o1)하면 다음과 같은 결과가 인쇄됩니다.

java.lang.Object@7a5e1077

Object.hashcode ()는 네이티브 메서드입니다.

public native int hashCode();

즉, 플랫폼 별 코드로 구현되고 네이티브 메서드로 노출됩니다.

동일한 코드는 컴파일 된 코드이며 JDK에서는 사용할 수 없습니다.

기존 질문 은 더 많은 정보를 제공 할 수 있습니다.

참조 URL : https://stackoverflow.com/questions/15130764/what-is-the-default-implementation-of-hashcode

반응형