본문 바로가기

JavaScript

[Java] Object 클래스의 toString() 메서드

java.lang 패키지는 자바 프로그래밍에 가장 기본이 되는 클래스들을 포함하고 있는 패키지이다. 이 java.lang 패키지에는 모든 클래스의 최고 조상인 Object 클래스가 있는데, 이번 포스팅에서는 Object 클래스의 메서드 toString()에 대해 알아보자. 

 

1. toString() - 객체 자신의 정보를 문자열로 반환한다. 

 

이 메서드(toString)는 인스턴스에 대한 정보를 문자열(String)로 제공할 목적으로 정의된 함수이다. 인스턴스에 대한 정보는 대부분 인스턴스 변수에 저장된 값들을 말하며, toString()을 통해 문자열로 표현된다.

 

    public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }

 

클래스를 작성할 때 toString()을 오버라이딩하지 않는다면, 위와 같은 코드가 그대로 사용될 것이다. 위 코드는 클래스 이름에 16진수 해시코드를 더한 문자열을 반환하는 코드이다. 

 

보통 인스턴스의 변수에 대한 값을 출력하기 위해 toString()을 오버라이딩해서 쓴다. 밑에 코드를 보자.

 

public class Card {
	String kind;
	int number;
	
	public Card(String kind, int number) {
		this.kind = kind;
		this.number = number;
	}
	
	@Override
	public String toString() {
		return "kind: " + this.kind + ", number: " + this.number;
	}
}
public class CardToString {

	public static void main(String[] args) {
		Card c1 = new Card("SPADE", 1);
		Card c2 = new Card("HEART", 10);
		
		System.out.println(c1.toString()); // kind: SPADE, number: 1
		System.out.println(c2.toString()); // kind: HEART, number: 10
	}

}

 

위 코드처럼 Card 클래스에 toString() 메서드를 오버라이딩 하여 의미 있는 정보를 출력하도록 하였다. @Override는 어노테이션(Annotation)으로 메서드를 오버라이딩하여 정의하겠단 뜻이다.  toString()으로 반환하는 문자열은 해시코드가 아닌 멤버변수를 반환하도록 재정의 하였다.