자바 본 강의

Object 클래스와 toString() 메서드

우주코딩 2021. 8. 9. 18:06

Object 클래스와 toString 메서드

Object에서 상속 받은 메서드

  1. toString()
  • 클래스 정보를 간단히 출력한다.
  • 패키지명.클래스명@16진수해시값
  • 예) ch15.My1@1e81f4dc

println()에 넘겨주는 값이 String 타입이 아니라면
println()은 그 객체에 대해 toString() 호출한 후 그 리턴 값을 출력한다.

System.out.println(obj.toString()); // 
System.out.println(obj); // 둘은 결국 같은 코드이다.

해시값?

  • 인스턴스 마다 부여된 고유의 식별자이다.
  • 주의! 주소 아니다!
  • 인스턴스가 같은지 검사할 때 사용할 수 있다.
  • hashCode()를 재정의하지 않고 원래 메서드를 그대로 사용하면
    무조건 인스턴스마다 새 해시값이 부여된다.

toString()?

=> Score 클래스의 수퍼 클래스인 Object의 메서드이다.
=> 클래스를 정의할 때 수퍼 클래스를 지정하지 않으면 자동으로 java.lang.Object 클래스가 수퍼 클래스로 지정된다.
=> 그래서 자바의 모든 클래스는 toString()을 호출할 수 있다.
즉, 자바의 모든 클래스는 Object 클래스에 정의된 메서드를 호출할 수 있다.

toString()의 리턴 값?

=> Object의 toString()을 호출하면 다음 형식의 문자열을 리턴한다.
"패키지 이름을 포함한 클래스명@인스턴스 식별자"
예) com.eomcs.oop.ex06.d.Exam0110$Score@12a74311

Object로부터 상속 받은 toString()의 리턴 값이 마음에 들지 않는다면 재정의해라.
=> 보통 인스턴스의 내부 데이터를 문자열로 리턴하도록 변경한다.
=> 프로그램을 실행하는 중에 인스턴스의 내부 값을 빠르게 확인하고 싶을 때 개발자들이 종종 이 메서드를 오버라이딩 한다.