반응형
hashCode()
- 모든 클래스의 조상인 Object클래스의 함수 중 하나입니다.
- 객체의 해시코드hash code를 반환합니다.
❓ native란
hashCode함수는 native로 선언되어있다. 여기서 native란
네이티브 메서드를 말한다. OS가 가지고 있는 메서드이다. 주로 C언어로 작성되어 있다.
- (C언어로 작성되어있는)객체 주소(해시코드)를 int로 변환해서 반환합니다.
- 객체마다 고유의 주소를 가지므로 해시코드를 객체의 지문이라고도한다.
※ 참조 2023.01.08 - [☕ 자바 JAVA/☕ 개발환경] - [JAVA]단순히 정리한 JVM구조와 Memory(+static)
❗ Object함수인) equals()를 오버라이딩하면, hashCode()도 오버라이딩히애 한다.
* 이유 : equals()결과가 같으면 해시코드도 같아야 하기 때문이다.
exmaple
❗ 모든 클래스의 조상인 Object를 통해 equals()와 hashCode()가 오버라이딩 된 것이다.
오버라이딩 시 선언부는 동일해야 하기 때문에 이 부분은 항상 동일하게 써야만 한다.
equals() 오버라이딩하면 hashcode()도 오버라이딩 해야 하기 때문에 아래와 같이 고쳐줘야 한다.
System.identityHashCode(Object obj)
: (오버라이딩 되지 않은)고유해시코드 출력
이 함수는 참고용으로만 알아두면 된다고 한다.
32bit JVM에서는 주소값이 Integer였는데 63bit에서 Long으로 변경되었다.
hashcode() 사용할 때 8Byte인 Long을 4Byte인 int로 변경하면서 주소값이 겹치는 경우도 있다.
반응형
'☕ 자바 JAVA > ☕ 클래스와 함수 Class & Method' 카테고리의 다른 글
[JAVA]String.join() & 문자열을 다른 타입으로 변환 (0) | 2024.11.08 |
---|---|
[JAVA]String 생성자와 메서드들 (0) | 2024.11.08 |
[JAVA]사용자정의 예외클래스 만들기, 연결된 예외 (0) | 2024.11.04 |
[JAVA]오류출력:printStackTrace() & getMessage(), 멀티 catch블럭 (0) | 2024.11.01 |
[JAVA]익명 클래스 anonymous class (0) | 2024.11.01 |