Object class
- 모든 Java 클래스의 최고 조상 클래스
- Java의 모든 클래스는 Object 클래스의 모든 메소드를 바로 사용할 수 있다.
- Object 클래스는 필드를 가지지 않는다.
- 총 11개의 메소드만으로 구성되어 있다.
toString() 메소드
- 해당 인스턴스에 대한 정보를 문자열로 반환한다.
- 인스턴스의 주소를 반환한다.
- ’@’는 단순 구분자
- 16진수 해시 코드 값
- 인스턴스마다 모두 다르게 반환된다.
- 사용 예시
equals() 메소드
- 해당 인스턴스를 매개변수로 전달받는 참조 변수와 비교하여 그 결과를 반환한다.
- 참조 변수가 가리키는 값을 비교한다.
- 서로 다른 두 객체는 언제나 false를 반환한다.
- Java에서 기본적으로 각 API 클래스마다 자체적으로 오버라이딩을 통해 재정의되어 있다.
- 사용 예시
clone() 메소드
- 해당 인스턴스를 복제하여 새로운 인스턴스를 생성해 반환한다.
- Object 클래스의 clone() 메소드는 필드의 값만 복사한다.
- 필드의 값이 배열이나 인스턴스면 제대로 복제할 수 없다.
- 해당 클래스에서 오버라이딩하여 복제가 제대로 이루어지도록 재정의해야 한다.
- 필드의 값이 배열이나 인스턴스면 제대로 복제할 수 없다.
- 데이터의 보호를 이유로 Cloneable 인터페이스를 구현한 클래스의 인스턴스만이 사용할 수 있다.
finalize() 메소드
- 해당 객체를 더는 아무도 참조하지 않아 가비지 컬렉터가 객체의 리소스를 정리하기 위해 호출한다.
getClass() 메소드
- 해당 객체의 클래스 타입을 반환한다.
hashCode() 메소드
- 해당 객체의 해시 코드값을 반환한다.
notify() 메소드
- 해당 객체의 대기(wait)하고 있는 하나의 스레드를 다시 실행할 때 호출한다.
notifyAll() 메소드
- 해당 객체의 대기(wait)하고 있는 모든 스레드를 다시 실행할 때 호출한다.
wait() 메소드
- 해당 객체의 다른 스레드가 notify()나 notifyAll() 메소드를 실행할 때까지
현재 스레드를 일시적으로 대기(wait)시킬 때 호출한다.
wait(long timeout) 메소드
- 해당 객체의 다른 스레드가 notify()나 notifyAll() 메소드를 실행하거나 전달받은 시간이 지날 때까지
현재 스레드를 일시적으로 대기(wait)시킬 때 호출한다.
wait(long timeout, int nanos) 메소드
- 해당 객체의 다른 스레드가 notify()나 notifyAll() 메소드를
실행하거나 전달받은 시간이 지나거나 다른 스레드가 현재 스레드를 인터럽트(interrupt) 할 때까지
현재 스레드를 일시적으로 대기(wait)시킬 때 호출한다.