더북(TheBook)

객체를 문자열과 연결하면 자바 컴파일러가 해당 객체의 toString 메서드를 자동으로 호출한다. 예를 들어 다음과 같다.

Point p = new Point(10, 20);

String message = "The current position is " + p;

    // 문자열을 p.toString()과 연결한다.


Tip icon2

x.toString() 대신에 "" + x로 작성해도 된다. 이 표현식은 xnull이거나 기본 타입 값일 때도 제대로 작동한다.


Object 클래스에 정의된 toString 메서드는 클래스 이름과 해시 코드(4.2.3 hashCode 메서드 참고)를 출력한다. 예를 들어 다음 호출은 결과로 java.io.PrintStream@2f6684를 출력한다. 이것은 PrintStream 클래스를 구현한 사람이 toString 메서드를 오버라이드하지 않았기 때문이다.

System.out.println(System.out)


icon Caution

배열은 Object에서 toString 메서드를 상속해 배열의 타입을 원시적인 형식으로 출력하도록 변경했다. 예를 들어 다음 배열이 있다고 하자.


int[ ] primes = { 2, 3, 5, 7, 11, 13 };


primes.toString()"[I@1a46e30"과 같은 문자열을 돌려준다. 결과에서 접두어 [I는 정수의 배열을 나타낸다.

Arrays.toString(primes)를 호출하면 이 문제를 해결할 수 있다(결과로 문자열 "[2, 3, 5, 7, 11, 13]"이 나온다). 다차원 배열(즉, 배열의 배열)을 올바르게 출력하려면 Arrays.deepToString을 사용해야 한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.