Object class

김설영·2022년 4월 8일
0
  • 모든 클래스의 최고 조상

  • 메서드 11개로 구성되어 있음

  • notify(), wait() 등은 쓰레드 관련 메서드

  • Reflection API 를 알아보자!

equals(Object obj)

  • 객체 자신(this)과 주어진 객체(obj)를 비교한다.

  • 객체의 주소(참조변수 값)를 비교하여, 주소가 같으면 true, 다르면 false를 리턴한다

  • 인스턴스 변수의 값을 비교하도록, equals()를 오버라이딩 해서 사용해야 한다.

hashCode()

  • 객체의 지문이라고도 함 (객체마다 다른 값)

  • 객체의 해시코드(hash code)를 반환하는 메서드

  • 해싱 알고리즘에서 사용. (컬렉션 프레임웍)

  • Object 클래스의 hashCode()는 객체의 주소를 int로 변환해서 반환

  • equals()를 오버라이딩 하면, hashCode()도 오버라이딩 해야 함

    • equals() : 주소 -> 값(iv) 으로 오버라이딩 하면,
    • hashCode() : 주소 -> 값(iv) 으로 오버라이딩 해줘야 함
    • equals()의 결과가 true인 두 객체의 해시코드는 같아야 하기 때문임
  • 오버라이딩 이전 기능이 필요할 때

    • System.identityHashCode(obj) 사용!
  • 32bit JVM 에서는, 주소값이 int type(4byte)이다. -> hashCode()를 사용할 때 문제 없음

  • 64bit JVM 에서는, 주소값이 long type(8byte)이다. -> hashCode() 사용 시, 반이 짤리기 때문에, 중복 값이 발생할 수 있음.

public class Object {
	...
    // native method : OS의 메서드 (주로 C언어로 작성)
    public native int hashCode();	// OS의 메서드를 호출하는 것
}

toString()

  • 객체를 문자열로 변환하기 위한 메서드

  • 객체 == iv 집합 -> 객체를 문자열로 변환한다 == iv 값을 문자열로 변환한다

public String toString() {	// Object 클래스의 toString()
	return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
profile
블로그 이동하였습니당! -> https://kimsy8979.tistory.com/

0개의 댓글