어제 오늘 내일

[Java 기초] Arrays.deepToString()으로 다차원 배열 출력하기 본문

IT/Java

[Java 기초] Arrays.deepToString()으로 다차원 배열 출력하기

hi.anna 2025. 8. 31. 01:08

배열을 출력할 때 흔히 Arrays.toString()을 사용합니다.
하지만 다차원 배열을 toString()으로 출력하면 메모리 주소값이 나오기 때문에 사람이 이해하기 힘듭니다.
이때 사용하는 메서드가 바로 Arrays.deepToString() 입니다.

 

1. Arrays.toString()의 한계

먼저 Arrays.toString()으로 2차원 배열을 출력해봅시다.

import java.util.Arrays;

public class DeepToStringExample1 {
    public static void main(String[] args) {
        int[][] arr = {{1, 2}, {3, 4}};

        System.out.println(Arrays.toString(arr));
    }
}

실행 결과

[[I@5ca881b5, [I@24d46ca6]

👉 각 내부 배열의 참조값(메모리 주소)이 출력되어 사람이 읽기 힘듭니다.

 

2. Arrays.deepToString() 사용하기

이제 Arrays.deepToString()을 사용해보겠습니다.

import java.util.Arrays;

public class DeepToStringExample2 {
    public static void main(String[] args) {
        int[][] arr = {{1, 2}, {3, 4}};

        System.out.println(Arrays.deepToString(arr));
    }
}

실행 결과

[[1, 2], [3, 4]]

👉 내부 배열까지 재귀적으로 탐색해 사람이 읽을 수 있는 문자열 형태로 변환됩니다.

 

3. 다차원 배열에서 더 큰 차이

3차원 배열에서 비교해보면 차이가 더 확실합니다.

import java.util.Arrays;

public class DeepToStringExample3 {
    public static void main(String[] args) {
        String[][][] arr = {
            {{"A", "B"}, {"C", "D"}},
            {{"E", "F"}, {"G", "H"}}
        };

        System.out.println("toString: " + Arrays.toString(arr));
        System.out.println("deepToString: " + Arrays.deepToString(arr));
    }
}

실행 결과

toString: [[[Ljava.lang.String;@5ca881b5, [[Ljava.lang.String;@24d46ca6]
deepToString: [[[A, B], [C, D]], [[E, F], [G, H]]]

👉 toString()은 주소값만 보이지만, deepToString()은 배열의 내용 전체를 보여줍니다.

 

4. null 값 포함 시

deepToString()은 null 값도 올바르게 출력합니다.

import java.util.Arrays;

public class DeepToStringExample4 {
    public static void main(String[] args) {
        String[][] arr = {{"A", null}, {"C", "D"}};

        System.out.println(Arrays.deepToString(arr));
    }
}

실행 결과

[[A, null], [C, D]]

 

5. equals()와 deepEquals()의 짝꿍

  • Arrays.equals()Arrays.toString() → 1차원 배열 중심
  • Arrays.deepEquals()Arrays.deepToString() → 다차원 배열 중심

👉 다차원 배열에서는 항상 deep 계열 메서드를 써야 합니다.

 

6. 정리

  • Arrays.toString() → 1차원 배열 출력용
  • Arrays.deepToString() → 다차원 배열 출력에 필수
  • 사람이 읽을 수 있는 배열 표현을 원한다면 deepToString()을 사용해야 함

👉 다차원 배열을 출력할 때는 toString() 대신 deepToString()을 쓰자!

 

 

반응형
Comments