자바 본 강의
Object 클래스와 toString() 메서드
우주코딩
2021. 8. 9. 18:06
Object 클래스와 toString 메서드
Object에서 상속 받은 메서드
- 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()의 리턴 값이 마음에 들지 않는다면 재정의해라.
=> 보통 인스턴스의 내부 데이터를 문자열로 리턴하도록 변경한다.
=> 프로그램을 실행하는 중에 인스턴스의 내부 값을 빠르게 확인하고 싶을 때 개발자들이 종종 이 메서드를 오버라이딩 한다.