
Object.toString()은 클래스이름@16진수해시코드를 반환한다.PhoneNumber 클래스의 기본 toString()은 아래와 같다. PhoneNumber p = new PhoneNumber(82, 1234, 5678);
System.out.println(p);
// 출력: PhoneNumber@3124625a (알 수 없는 정보)
toString()을 재정의해서 사람이 읽기 쉽게 만들었다면? PhoneNumber p = new PhoneNumber(82, 1234, 5678);
System.out.println(p);
// 출력: +82-1234-5678
@Override
public String toString() {
return String.format("+%02d-%04d-%04d", countryCode, prefix, lineNumber);
}
String.format()을 사용해 사람이 읽기 쉬운 형식으로 변환했다. PhoneNumber p = new PhoneNumber(82, 1234, 5678);
System.out.println(p); // 출력: +82-1234-5678
예:
/**
* 이 전화번호의 문자열 표현을 반환한다.
* 이 문자열은 "+XX-YYYY-ZZZZ" 형태의 13글자로 구성된다.
* 형식: +국가코드-중간번호-끝번호 (+82-1234-5678)
*/
@Override
public String toString() {
return String.format("+%02d-%04d-%04d", countryCode, prefix, lineNumber);
}
record 클래스 를 사용하면 toString이 자동 생성된다. public record PhoneNumber(int countryCode, int areaCode, int number) {}
toString()을 재정의하면 가독성, 디버깅, 로깅, 유지보수성이 향상된다.