Java - 2차원 배열 선언, 출력 방법

자바에서 다차원, 또는 2차원 배열을 선언하는 방법을 소개합니다. 또한 다차원 배열을 println()으로 화면에 출력하는 방법을 소개합니다.

2차원 배열은 배열 요소로 1차원 배열을 갖는 것을 말합니다. 다차원 배열은 2차원 이상의 배열을 말하는데, 4차원 배열은 배열 요소로 3차원 배열을 갖는 배열입니다.

이 글에서는 2차원 배열 선언을 예제로, 어떻게 다차원 배열을 선언하는지 알아보겠습니다.

1. 2차원 배열 선언 및 값 할당

2차원 배열은 아래와 같은 형태로 선언할 수 있습니다. columns는 2차원 배열의 열의 길이이며, rows는 행의 길이가 됩니다.

int[][] arr = new int[rows][columns];

2행 3열의 2차원 배열을 선언하려면 아래와 같이 선언하면 됩니다.

int[][] arr = new int[2][3];

위의 2차원 배열을 그림으로 표현하면 아래와 같습니다. java 2 dimensional arrays

배열을 선언하면 기본적으로 모든 요소 값은 0으로 설정됩니다. 아래와 같이 다른 값으로 변경할 수 있습니다.

int[][] arr = new int[2][3];

arr[0][0] = 0;
arr[0][1] = 1;
arr[0][2] = 2;
arr[1][0] = 3;
arr[1][1] = 4;
arr[1][2] = 5;

다차원 배열은 아래와 같이 2개의 for loop로 출력할 수 있습니다.

for (int i = 0; i < arr.length; i++) {
    for (int k = 0; k < arr[i].length; k++) {
        System.out.println("int[" + i + "][" + k + "] = " + arr[i][k]);
    }
}

아래 코드는 위에서 설명한 것처럼 2차원 배열을 선언하고 3가지 방법으로 출력하는 예제입니다. 출력하는 방법들 중에서 Arrays.deepToString() 라이브러리를 이용하면 반복문으로 출력하는 코드를 직접 구현할 필요가 없습니다.

import java.util.Arrays;

public class Example {

    public static void main(String[] args) {

        int[][] arr = new int[2][3];

        arr[0][0] = 0;
        arr[0][1] = 1;
        arr[0][2] = 2;
        arr[1][0] = 3;
        arr[1][1] = 4;
        arr[1][2] = 5;

        System.out.println("# Output 1");
        for (int i = 0; i < arr.length; i++) {
            for (int k = 0; k < arr[i].length; k++) {
                System.out.println("arr[" + i + "][" + k + "] = " + arr[i][k]);
            }
        }

        System.out.println("# Output 2");
        for (int i = 0; i < arr.length; i++) {
            int[] innerArr = arr[i];
            for (int k = 0; k < innerArr.length; k++) {
                System.out.println("arr[" + i + "][" + k + "] = " + innerArr[k]);
            }
        }

        System.out.println("# Output 3");
        System.out.println(Arrays.deepToString(arr));
    }
}

Output:

# Output 1
arr[0][0] = 0
arr[0][1] = 1
arr[0][2] = 2
arr[1][0] = 3
arr[1][1] = 4
arr[1][2] = 5
# Output 2
arr[0][0] = 0
arr[0][1] = 1
arr[0][2] = 2
arr[1][0] = 3
arr[1][1] = 4
arr[1][2] = 5
# Output 3
[[0, 1, 2], [3, 4, 5]]

2. 2차원 배열 선언과 동시에 초기화

다차원 배열을 선언과 동시에 값을 할당하려면 아래와 같이 선언하면 됩니다. 아래 예제는 2차원 배열 선언인데, { } 내부의 첫번째 { }가 첫번째 행(row)의 1차원 배열이 되며, 두번째 { }가 두번째 행(row)의 1차원 배열이 됩니다.

int[][] arr = { {0, 1, 2}, {3, 4, 5} };

위와 같이 2차원 배열을 선언하면 아래와 같은 값이 배열에 할당됩니다.

arr[0][0] = 0
arr[0][1] = 1
arr[0][2] = 2
arr[1][0] = 3
arr[1][1] = 4
arr[1][2] = 5

아래 코드는 2차원 배열을 선언과 동시에 할당하고 출력하는 예제입니다.

import java.util.Arrays;

public class Example1 {

    public static void main(String[] args) {

        int[][] arr = { {0, 1, 2}, {3, 4, 5} };

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

Output:

[[0, 1, 2], [3, 4, 5]]

3. 동적 배열(Dynamic array) : 배열의 길이가 다른 다차원 배열

위에서 소개한 2차원 배열 예제는, 모두 배열의 길이가 고정되어있었습니다.

배열의 열(Column)이 각각 다른 길이를 갖도록 하려면 어떻게 해야 할까요?

아래와 같이 배열의 Column만 먼저 입력하여 선언하고, 다른 길이의 배열을 만들어서 Row에 입력해주면 됩니다. 출력해보면 Row의 길이가 다른 다차원 배열이 생성된 것을 알 수 있습니다.

import java.util.Arrays;

public class Example2 {

    public static void main(String[] args) {

        int[][] arr = new int[3][];
        arr[0] = new int[1];
        arr[1] = new int[2];
        arr[2] = new int[3];

        arr[0][0] = 0;
        arr[1][0] = 1;
        arr[1][1] = 2;
        arr[2][0] = 3;
        arr[2][1] = 4;
        arr[2][2] = 5;

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

Output:

[[0], [1, 2], [3, 4, 5]]

3.1 동적 배열의 선언과 동시에 초기화

동적 배열도 아래와 같이 선언과 동시에 초기화할 수 있습니다.

import java.util.Arrays;

public class Example3 {

    public static void main(String[] args) {

        int[][] arr = {{0}, {1, 2}, {3, 4, 5}};

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

Output:

[[0], [1, 2], [3, 4, 5]]
Loading script...

Related Posts

codechachaCopyright ©2019 codechacha