1 분 소요

배열 값 출력하는 2가지 방법 / toString()

배열 출력

public class PrintArray {
    public static void main(String[] args) {
        int[] arr = { 1, 2, 3, 4, 5 };
 
        System.out.println(arr); 
    }
}

// 결과 : [I@762efe5d

출력 값이 이상한 이유는

[1,2,3,4,5] 값이 들어있는 메모리의 주소값이 출력되기 때문이다.

1. 반복문 사용

public class PrintArray {
    public static void main(String[] args) {
        int[] arr = { 1, 2, 3, 4, 5 };
 
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }
}
// 결과 : 
// 1
// 2
// 3
// 4
// 5

배열의 각 index값을 읽어서 값을 출력.

2. toString() 메소드 사용

import java.util.Arrays;
 
public class PrintArray {
    public static void main(String[] args) {
        int[] arr = { 1, 2, 3, 4, 5 };
 
        System.out.println(Arrays.toString(arr));
    }
}
// 결과 : [1, 2, 3, 4, 5]

배열에 정의된 값들을 문자열 형태로 만들어서 리턴.

toString()

문자열을 출력할 때, 변수에 문자열을 할당할 때 사용.

java.lang 패키지의 Object클래스의 toString메소드의 구현을 살펴보면 아래와 같다.

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

toString메소드는 클래스이름@16진수로_표시된_해시코드형태의 문자열을 반환한다.

class People {
    final String name;
    final int age;

    People(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

People people = new People("demuu", 10);
System.out.println(people.toString()); // toString() 을 생략해도 된다.

// 출력값 : aTest.Test$1People@7a79be86

toString 은 디버깅을 위해 설계된 메서드이다.

어떤 문제가 발생한 클래스가 toString이 잘 구현된 클래스일 경우 스스로를 완벽히 설명하는 문자열이 로깅될 것이고, 그렇지 않을 때 보다 원인을 발견하기 쉬워진다.

카테고리: ,

업데이트:

댓글남기기