본문 바로가기

프로그래밍언어/Java

[Java 중급] toString()

 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