HOWTO · Java

Java에서 2D 배열의 길이를 얻는 방법

이 기사에서는 Java에서 2D 배열의 길이를 가져 오는 방법을 소개합니다.

이 페이지의 내용

arr이라는 Java 2차원 배열에서 arr.length는 행의 개수를 반환합니다. 직사각형 배열에서는 바깥 배열에 첫 번째 행이 있을 때 arr[0].length로 각 행의 열 개수를 확인할 수 있습니다. Java는 각 요소가 별도의 행 배열인 배열로 2차원 배열을 표현하므로, 가변 길이 배열에서는 행마다 길이가 다를 수 있습니다. (가변 길이 배열)

Java 2차원 배열에서 행과 열이 저장되는 방식

int[][] values와 같은 선언은 int[] 행들로 이루어진 바깥 배열을 나타냅니다. 바깥 배열의 length는 행 참조의 개수를 세며, 격자 안에 있는 모든 정수의 개수를 세지는 않습니다. 각 행에는 자체 length가 있습니다. 모든 행의 길이가 같으면 직사각형 배열이고, 행마다 길이가 다를 수 있으면 가변 길이 배열입니다.

length 멤버는 메서드가 아니라 모든 Java 배열에 있는 필드입니다. 괄호 없이 values.length라고 씁니다. 특정 행을 확인하려면 values[rowIndex].length를 사용합니다.

직사각형 2차원 배열의 크기 구하기

행의 개수에는 바깥 배열의 length를 사용합니다. 배열에 행이 하나 이상 있고 모든 행의 크기가 같다면 첫 번째 행의 length가 열의 개수입니다. 다음 전체 예제는 두 크기를 모두 출력합니다.

다음 예제를 실행해 보세요.

이 섹션의 코드와 표시되는 레이블 또는 출력은 영어로 유지됩니다.

class Main {
    public static void main(String[] args) {
        int[][] scores = {
            {8, 7, 9},
            {6, 5, 8}
        };

        int rows = scores.length;
        int columns = scores[0].length;
        System.out.println("Rows: " + rows);
        System.out.println("Columns: " + columns);
    }
}

출력 결과에는 두 행과 세 열이 표시되며, 이는 scores의 크기와 일치합니다.

Rows: 2
Columns: 3

가변 길이 배열에서 각 행의 길이 구하기

가변 길이 배열에는 하나로 정해진 열의 개수가 없습니다. 행 하나를 선택해 길이를 확인하거나, 바깥 배열을 반복해 모든 행을 살펴볼 수 있습니다. 반복문의 조건에는 rows.length를 사용하고, rows[i].length는 선택한 행의 크기를 반환합니다.

이 섹션의 코드와 표시되는 레이블 또는 출력은 영어로 유지됩니다.

class Main {
    public static void main(String[] args) {
        int[][] rows = {
            {4, 2},
            {7, 1, 3},
            {9}
        };

        System.out.println("Rows: " + rows.length);
        for (int i = 0; i < rows.length; i++) {
            System.out.println("Row " + i + " length: " + rows[i].length);
        }
    }
}

출력 결과에는 각 행의 길이가 표시됩니다. 특정 행 하나만 필요하다면 rows[1].length와 같은 식을 사용합니다.

Rows: 3
Row 0 length: 2
Row 1 length: 3
Row 2 length: 1

비어 있거나 null인 행을 안전하게 처리하기

arr[0].length를 읽기 전에 바깥 배열에 행이 있는지 확인하세요. new int[0][]으로 만든 배열에는 첫 번째 행이 없으므로, 인덱스 0을 사용하기 전에 arr.length > 0인지 확인해야 합니다. 특정 행을 요청할 때는 먼저 rowIndex >= 0 && rowIndex < arr.length인지 검사하세요. Java 배열 인덱스는 0부터 시작하며, 마지막으로 유효한 인덱스는 arr.length보다 1 작습니다. 그런 다음 길이를 읽기 전에 arr[rowIndex]가 null이 아닌지 확인하세요. null인 행을 역참조하면 NullPointerException이 발생합니다. 요소가 하나도 없는 행은 이와 다릅니다. 해당 행의 길이는 0이며 안전하게 읽을 수 있습니다.

이 섹션의 코드와 표시되는 레이블 또는 출력은 영어로 유지됩니다.

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

        System.out.println("Rows: " + arr.length);
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == null) {
                System.out.println("Row " + i + " is null");
            } else {
                System.out.println("Row " + i + " length: " + arr[i].length);
            }
        }
    }
}

이 예제의 출력 결과는 다음과 같습니다.

Rows: 3
Row 0 length: 2
Row 1 is null
Row 2 length: 0

null인 행은 역참조하지 않고 식별되며, 할당되어 있지만 요소가 없는 행의 길이는 0입니다. 바깥 배열 자체가 null일 수 있다면 arr.length를 읽기 전에 arr != null인지 확인하세요.