JAVA

object ( 최상위 타입 )

오매준 2024. 5. 14. 17:49

# 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());