`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
'programing' 카테고리의 다른 글
android-콘텐츠 제공자가없는 CursorLoader 및 SQLite (0) | 2021.01.15 |
---|---|
네임 스페이스 종속성이 필요하지 않습니다. (0) | 2021.01.15 |
함수 포인터 유형 반환 (0) | 2021.01.15 |
IACA 란 무엇이며 어떻게 사용합니까? (0) | 2021.01.15 |
-a 대 -e 옵션 인 경우 bash (0) | 2021.01.15 |