- 모든 클래스의 최고 조상. 오직 11개의 메서드만을 가지고 있다.
- notify(), wait() 등은 쓰레드와 관련된 메서드이다.
equals (Object obj)
-객체 자신(this)과 주어진 객체(obj)를 비교한다. 같으면 true, 다르면 false.
-Object클래스의 equals()는 객체의 주소를 비교(참조변수 값 비교)
-인스턴스 변수(iv)의 값을 비교하도록 equals()를 오버라이딩 해야한다.

hashCode()
- 객체의 해시코드(hash code)를 반환하는 메서드
- Object클래스의 hashCode()는 객체의 주소를 int로 변환해서 반환
- equals()를 오버라이딩 하면, hashCode()도 오버라이딩해야 한다.
자바의 Object 클래스에서는 **equals()**와 hashCode() 메서드가 서로 연관된 규약을 따른다.
- equals()를 오버라이딩하면, hashCode()도 반드시 오버라이딩해야 한다
- 동일한 객체라면 동일한 해시 코드를 반환해야 하므로, 이를 일관되게 유지해야 한다
- equals()와 hashCode()의 규약을 따르지 않으면, **해시 기반 컬렉션(HashMap, HashSet 등)**에서 예상치 못한 동작이 발생할 수 있다.
- 항상 equals()와 hashCode()를 함께 오버라이딩하여, 객체가 정확하게 비교되고, 해시 기반 자료 구조에서 올바르게 동작하도록 보장해야 한다
- equals()의 결과가 true인 두 객체의 해시코드는 같아야 하기 때문 ★★★
*native 메서드: 자바 코드로 작성되지 않은 메서드, 자바 외부의 다른 언어(C, C++ 같은 네이티브 언어)로 구현된 메서드
JNI(Java Native Interface): 네이티브 언어로 작성된 코드를 호출할 수 있게 해주는 기술
equals()를 오버라이딩 하면, hasCode()도 오버라이딩 해야한다.
-System.identityHashCode(Object obj) > Object 클래스의 hashCode()와 동일, 하지만 객체마다 다른 해시코드 반환
toString(), toString()의 오버라이딩
-toString(): 객체를 문자열(String)으로 변환하기 위한 메서드
| public String toString() { // Object클래스의 toString() return getClass().getName()+"@"+Integer.toHexString(hashCode()); } |
'Programming > 자바(Java)' 카테고리의 다른 글
| 9-11 String클래스의 생성자와 메서드 (0) | 2024.10.08 |
|---|---|
| 9-7 String클래스 (0) | 2024.10.08 |
| 8-15 예외 + (사용자 정의 예외, 예외 되던지기, 연결된 예외) (0) | 2024.10.07 |
| 8-4 예외 처리하기, try-catch문 (0) | 2024.10.07 |
| 8-1 프로그램 오류 (0) | 2024.10.07 |