04. Array(2)
다차원 배열(2차원 배열 위주로 설명)
1) 정의
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
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차원 배열 생성 후 주소값 지정
....