포스트

04. Array(2)

다차원 배열(2차원 배열 위주로 설명)

1) 정의

  • 자료형이 같은 1차원 배열의 묶음

2) 선언 및 할당

1
2
3
4
5
<선언>	// stack 메모리에 생성, heap메모리 2차원배열 시작 주소값을 따른다
자료형[][] 배열명;

int[][] arr;  //(== 자료형 배열명[][] // 자료형[] 배열명[])
[] 하나의 차원을 뜻한다.
1
2
3
4
<할당>	// heap 메모리에 생성
				// 각 행들은 자기 열(1차원 배열)의 첫번째 주소를 참조

new int[2][3] : 2, 3열의 크기로 할당
1
2
3
<선언과 동시에 할당>

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

3) 초기화

  • 각 행의 열에 값을 대입
1
2
3
4
5
<인덱스를 이용한 초기화>

arr[0][0] = 0;
arr[0][1] = 1;
....
1
2
3
4
5
6
7
<2 for문을 이용한 초기화>

for(int row=0; row<arr.length; row++){
  for(int col=0; col<arr[0].length; col++){
    arr[row][col] = row+col;
  }
}
1
2
3
4
5
6
7
8
<선언과 동시에 초기화>

int arr[][] = {
  {1, 2, 3}
  {4, 5, 6}
  {7, 8, 9}
};  // 3행 3열
(== { {1,2,3}, {4,5,6}, {7,8,9} });

4) 가변배열

  • 열의 개수가 다른 같은 자료형의 1차원 배열의 묶음
1
2
3
4
int[][] arr = new int[3][]; // 일단 3행을 만들고
arr[0] = new int[3]; // 0행에 3열의 1차원 배열 생성 후 주소값 지정
arr[1] = new int[1]; // 1행에 1열의 1차원 배열 생성 후 주소값 지정
....