1차원 배열이 직선 형태의 데이터라면, 2차원 배열은 행(Row)과 열(Column)로 이루어진 표(Matrix) 구조다. 내부적으로는 ‘배열 안에 또 다른 배열이 들어있는 형태’로 관리된다.
1. 2차원 배열 선언
대괄호 [][]를 두 번 사용하여 선언한다. 앞의 대괄호는 ‘행(세로)’, 뒤의 대괄호는 ‘열(가로)’을 의미한다.
// [2차원 배열 선언 예제]
// 2행 3열의 배열 생성
int[][] matrix = new int[2][3];
// 배열 생성과 동시에 값을 할당할 수 있다 (표 구조가 한눈에 보이도록 들여쓰기 권장)
int[][] grid = {
{1, 2, 3}, // 0행 (인덱스 0)
{4, 5, 6} // 1행 (인덱스 1)
};
2. 고차원 배열
2차원 배열이 ‘행’과 ‘열’로 이루어진 하나의 표(Table)였다면, 3차원 배열은 그 표가 여러 장 겹쳐 있는 큐브(Cube)나 책의 페이지 같은 입체적인 형태를 띈다.
실무에서 자주 쓰이지는 않지만, 3D 그래픽스 데이터나 복잡한 공간 좌표(x, y, z), 혹은 영상 처리 데이터를 다룰 때 종종 활용된다.
1. 3차원 배열의 선언
대괄호 [][][]를 세 번 사용하여 선언한다.
[면(Depth)][행(Row)][열(Column)]의 순서를 보통 사용한다.
// [3차원 배열 선언 예제]
// 2개의 면, 각 면마다 3개의 행, 각 행마다 4개의 열을 가진 배열 생성 (총 2 * 3 * 4 = 24개의 데이터 공간)
int[][][] cube = new int[2][3][4];
3. 다차원 배열 순회
2차원 배열을 모두 순회하려면 이중 for문이 필수적이다. 바깥쪽 for문은 ‘행’을, 안쪽 for문은 ‘열’을 순회한다.
이 때 grid.length는 행의 개수를, grid[i].length는 특정 행의 열 개수를 뜻한다는 점을 주의해야 한다.
3차원 배열 순회를 위해서는 3중 for문을 사용하고, 제일 바깥쪽부터 안쪽으로 ‘면 → 행 → 열’ 순서로 순회한다.
💡 다차원 배열은 차원이 늘어날 때마다 대괄호 []와 순회를 위한 for문이 하나씩 추가될 뿐, 근본적인 원리(배열 안의 배열)는 동일하다.
// [2차원 배열 순회 예제]
for (int i = 0; i < grid.length; i++) { // 행(Row) 반복
for (int j = 0; j < grid[i].length; j++) { // 열(Column) 반복
System.out.print(grid[i][j] + " ");
}
System.out.println(); // 한 행이 끝나면 줄바꿈
}
// 출력:
// 1 2 3
// 4 5 6