자바(Java)에서 toString() 메서드는 어떤 용도로 사용될까요?
클래스의 객체를 문자열(String) 형태로 표현하고 싶을 때 toString() 메서드를 사용하면 됩니다. 이 메서드는 객체에 대한 텍스트 표현(textual representation)을 반환하는 역할을 합니다.
객체를 출력할 때 자바 컴파일러는 기본적으로 해당 객체의 toString() 메서드를 호출합니다. 따라서 이 메서드를 재정의(오버라이딩)하면, 단순한 내부 참조 값 대신 의미 있는 정보를 담은 출력 결과를 제공할 수 있습니다.
다음 예제를 통해 이 개념을 자세히 살펴보겠습니다.
toString() 메서드 재정의하기
package io.devqa.tutorials;
public class ToStringExample {
private String firstName;
private String lastName;
private String email;
public ToStringExample() {
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("First name : ").append(this.firstName).append("\n");
sb.append("Last name : ").append(this.lastName).append("\n");
sb.append("Email : ").append(this.email).append("\n");
return sb.toString();
}
public static void main(String args[]) {
ToStringExample example = new ToStringExample();
example.setFirstName("Testing");
example.setLastName("Tester");
example.setEmail("testing@tester.com");
System.out.println(example);
}
}
toString() 메서드를 재정의한 후 위 코드를 실행하면 다음과 같이 객체의 필드 값을 사람이 읽기 쉬운 형태로 확인할 수 있습니다.
First name : Testing
Last name : Tester
Email : testing@tester.com
반면, toString() 메서드를 재정의하지 않으면 출력 결과는 아래와 같습니다.
io.devqa.tutorials.ToStringExample@60e53b93
재정의하지 않은 경우에는 클래스 이름과 해시코드로 구성된 패키지명.클래스명@16진수 해시값 형태가 출력되어 객체의 실제 내용을 전혀 알 수 없습니다.
이처럼 toString() 메서드를 적절히 재정의하면 디버깅 시 객체 상태를 빠르게 파악할 수 있고, 로깅(log) 작업에서도 유용하게 활용할 수 있습니다. 또한 StringBuilder를 사용하면 문자열 연결 작업의 성능도 효율적으로 관리할 수 있습니다.