Dico

[Java] 다차원 배열

다차원 배열

대괄호의 개수에 따라 차원의 수가 결정된다.

주로 [] 1차원, [][] 2차원 배열이 사용되고 3차원 이상의 고차원 배열은 잘 사용되지 않는다.

그 중 2차원 배열을 살펴보자.

선언

타입[][] 변수이름;

타입 변수이름[][];

타입[] 변수이름[];

1차원 배열에 대괄호가 하나 더 늘어났다.

2차원 배열은 주로 테이블 형태의 데이터를 담는데 사용된다.

int[][] array;
int array[][];

생성

2차원 배열은 행(row)과 열(column)로 구성되어 있다.

int array[][] = new int[2][3];
열0열1열2
행0000
행1000
  • index

    index도 행과 열에 각각 하나씩 존재한다.

    행 index 범위 :  0 ~ 행의 길이-1

    열 index 범위 :  0 ~ 열의 길이-1

    저장 공간은 행 index * 열 index 만큼 생성된다.

열0열1열2
행0array[0][0]array[0][1]array[0][2]
행1array[1][0]array[1][1]array[1][2]
  • 값 출력
int array[][] = new int[2][3];
array[1][1] = 5;
System.out.println(array[1][1]);    // 5

초기화

괄호{ }로 행을 구분한다.

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

행마다 줄 바꿈을 해주면 가독성이 좋아진다.

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

형태

배열의 배열.

여러 개의 1차원 배열을 묶어서 또 하나의 배열로 만든 것.

arr
0x100
arr[0]arr[0][0]arr[0][1]arr[0][2]arr[0][3]
0x2001134
arr[1]arr[1][0]arr[1][1]arr[1][2]arr[1][3]
0x3005612
arr[2]arr[2][0]arr[2][1]arr[2][2]arr[2][3]
0x4003456
  • arr.length = 행의 개수. 3
  • arr[index].length = 행index의 열의 개수. 4

가변 배열

2차원 이상의 다차원 배열을 생성할 때 전체 배열 차수 중 마지막 차수의 길이를 지정하지 않고,

추후에 각기 다른 길이의 배열을 생성하여 유동적인 배열을 구성할 수 있다.

int[][] arr = new int[2][];       // arr.length = 2
arr[0] = new int[3];	          // arr[0].length = 3
arr[1] = new int[1];	          // arr[1].length = 1
  • 초기화
int[][] arr = {
        {1, 2, 3, 4},
        {5, 6},
        {3, 4, 5}
};

참고 서적: 자바의 정석 3판