toString()
Object.toString() 메서드는 객체의 정보를 문자열 형태로 제공한다. 따라서 디버깅과 로깅에 유용하게 사용된다.
예제
public class ToStringMain1 {
public static void main(String[] args) {
Object object = new Object();
String str = object.toString();
//toString() 반환값 출력
System.out.println(str);
//Object 직접 출력
System.out.println(object);
}
}
실행결과

=> 실행결과가 똑같다.
Object.toString() 메서드를 확인해보자.
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
=> 클래스에 대한 정보 + 객체의 참조값(해시코드)를 16진수로 제공한다.
결과값이 같은 이유는 System.out.println() 메서드가 내부에서 toString() 을 호출하기 때문이다.
toString() 오버라이딩
Object.toString() 메서드는 클래스 정보와 참조값을 제공한다. 그러나 이 정보만으로는 객체의 상태를 적절히 나타내지 못한다. 그래서 보통은 toString()을 재정의해서 더 유용한 정보를 제공하는 것이 일반적이다.
Car.java
public class Car {
private String carName;
public Car(String carName) {
this.carName = carName;
}
}
Dog.java
public class Dog {
private String dogName;
private int age;
public Dog(String dogName, int age) {
this.dogName = dogName;
this.age = age;
}
@Override
public String toString() {
return "dogName=" + dogName + ", age=" + age;
}
}
Object 의 다형성을 활용해보자.
public class ObjectPrinter {
public static void print(Object obj) {
String string = "객체 정보 출력: " + obj.toString();
System.out.println(string);
}
}
=> ObjectPrinter의 print 메서드는 파라미터로 Object 타입을 받는다. 따라서 Dog, Car를 출력할 수 있다.
실행결과

=> Object obj의 인수로 car, dog 가 호출된다. 메서드는 내부에서 obj.toString()을 호출한다. obj는 Object 타입이므로 Object에 있는 toString()을 찾는다. 이때 재정의 된 메서드가 있는지 확인하고 없을 경우 object.toString()을 실행한다. Dog의 경우엔 재정의된 메서드가 있으므로 Dog.toString()을 실행한다.
* 인프런 '김영한의 실전 자바 - 중급 1편'을 참고하여 작성하였습니다.
'프로그래밍언어 > Java' 카테고리의 다른 글
[Java 중급] equals() (0) | 2024.08.08 |
---|---|
[Java 중급] Object와 OCP (0) | 2024.08.01 |
[Java 중급] Object 배열 (0) | 2024.07.31 |
[Java 중급] Object 다형성 (0) | 2024.07.30 |
[Java 중급] Object 클래스 (0) | 2024.07.30 |