object ( 최상위 타입 )
# Object class
- 모든 클래스들의 최고 조상 클래스
- 자바에 존재하는 모든 객체는 Object 클래스의 자손이다
- Object 클래스의 메서드는 모든 클래스 내부에 이미 상속받아져서 존재하고 있다
- Object 클래스의 메서드는 주로 해당 클래스에 맞는 형태로 오버라이드 하여 사용하게끔 설계되어 있다
# toString()
- "해당 객체를 문자열로 표현한다면 어떤 모양이어야 하는가"를 정의해두는 메서드
- 자바의 모든 객체는 toString()을 통해 문자열로 표현될 수 있다
- Object클래스에 정의되어있는 toString()의 원형은 해당 클래스의 이름과 메모리상의 주소값을 출력하게 되어있다
- toString() 기본 동작이 싫다면 해당 메서드를 오버라이드하여 사용하면 된다
class TStory {
}
여기 TStory 클래스가 있다
TStory ts = new TStory();
System.out.println(ts);
toString()이 오버라이드 되있지 않아 클래스 이름 (TStory) @ 메모리상의 주소 (515f550a) 가 나온다
class TStory {
@Override
public String toString() {
return String.format("HelloWorld %d", 44);
}
}
toString()을 오버라이드하여 toString() 출력 결과를 바꿀 수 있다
# equals(obj)
- "두 인스턴스가 같다고 판정하는 기준은 무엇인가"를 정의해두는 메서드
- 매개변수로 전달받은 인스턴스와 현재 인스턴스(this)를 비교하여 결과를 리턴한다
- Object 클래스에 정의되어있는 기본 동작은 두 인스턴스가 같은 인스턴스인지를 비교하게끔 만들어져 있다
String first = "안녕";
String second = "안녕";
System.out.println(first.equals(second));
두 인스턴스를 비교하여 boolean타입으로 값을 반환한다
# hashcode()
- "해당 객체를 유일하게 구분할 수 있는 값은 무엇인가"를 정의해두는 메서드
- 해당 인스턴스의 지문 같은 역할을 하는 메서드
- Object 클래스에 정의되어있는 기본 동작은 해당 인스턴스의 주소값을 리턴하게끔 구현되어 있다
- 자바의 모든 객체는 toString()을 통해 문자열로 표현될 수 있다
- Object클래스에 정의되어있는 toString()의 원형은 해당 클래스의 이름과 메모리상의 주소값을 출력하게 되어있다
System.out.println(first.hashCode());
System.out.println(second.hashCode());
System.out.println(ts.hashCode());