Java

Object클래스 메서드 - toString()

1space 2025. 6. 22. 01:28

자바의 정석[기초편]으로 공부한 내용을 정리한 글입니다.

기본 설명

  • toString() 메서드는 객체 정보를 사람이 읽을 수 있는 문자열 형태로 반환해 주는 메서드입니다.
  • 이 메서드는 Object 클래스에 정의되어 있으며, 모든 클래스의 조상이 Object이므로 모든 클래스는 기본적으로 toString() 메서드를 사용할 수 있습니다.
  • 그러나 Object 클래스의 기본 toString()은 의미 없는 문자열을 반환합니다.

Object 클래스의 기본 toString() 구현

public String toString() {
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
  • 예를 들어, 클래스 이름이 Card이고, 해시코드가 193a55라면:
  •  
    Card@193a55

예제 1 : Object의 기본 toString() 사용 결과

class Card {
    String kind;
    int number;

    Card() {
        this("SPADE", 1);
    }

    Card(String kind, int number) {
        this.kind = kind;
        this.number = number;
    }
}

class Ex9_4 {
    public static void main(String[] args) {
        Card c1 = new Card();
        Card c2 = new Card();

        System.out.println(c1.toString());
        System.out.println(c2.toString());
    }
}

실행 결과

Card@19e0bfd
Card@193a55
  • 여기서 확인할 수 있는 것:
    • Card@19e0bfd → 클래스 이름 + 해시코드 조합
    • 두 객체는 서로 다른 주소(참조값)을 가지므로 toString() 결과도 다릅니다.
    • 기본 toString()은 객체 내부 정보는 출력하지 않음.

 

toString()의 오버라이딩

  • 많은 클래스들은 toString() 메서드를 오버라이딩(재정의)하여 객체에 담긴 중요한 데이터를 출력할 수 있도록 합니다.
  • 예를 들어 String, Date, Calendar, ArrayList 같은 클래스들은 모두 toString()을 오버라이딩하고 있음.

예제 2 : toString()을 오버라이딩한 클래스

 
class Card2 {
    String kind;
    int number;

    Card2() {
        this("SPADE", 1);
    }

    Card2(String kind, int number) {
        this.kind = kind;
        this.number = number;
    }

    public String toString() {
        return "kind : " + kind + ", number : " + number;
    }
}
class Ex9_5 {
    public static void main(String[] args) {
        Card2 c1 = new Card2();
        Card2 c2 = new Card2("HEART", 10);

        System.out.println(c1.toString());
        System.out.println(c2.toString());
    }
}

실행 결과

kind : SPADE, number : 1
kind : HEART, number : 10

설명

  • Card2 클래스에서 toString()을 직접 정의하여 객체의 속성 값(kind와 number)을 문자열로 출력함.
  • 이제 객체 정보를 확인할 때 Card@193a55 같은 추상적인 정보가 아닌, 실제 카드의 종류와 숫자를 출력할 수 있음.

 

결론 요약

Object.toString() 클래스명@해시코드 형식의 문자열을 반환 (기본 구현)
오버라이딩된 toString() 객체의 내용을 사람이 읽기 쉬운 형식으로 출력하도록 커스터마이징
사용 목적 디버깅, 로그 출력, 객체 정보 확인 등에 매우 유용
 

'Java' 카테고리의 다른 글

문자열과 기본형 간의 변  (0) 2025.06.22
String클래스  (0) 2025.06.22
Object클래스의 메서드 - hashCode()  (0) 2025.06.22
Object 클래스의 메서드 - equals()  (0) 2025.06.22
Object클래스  (0) 2025.06.22