: 자료형이 같은 1차원 배열의 묶음으로 배열 안에 다른 배열이 존재
2차원 배열은 할당된 공간마다 인덱스 번호 두 개 부여함
(앞 번호는 행, 뒷 번호는 열 [0][0]
)
→ {{ , }, { , }, { , }}
이런 식으로 생김
1차원 배열: 변수를 묶음으로 다루는 것
2차원 배열: 1차원 배열을 묶음으로 다루는 것
이 외 3차원 이상의 배열도 있음, []
를 추가로 작성
ex) int[][][] arr;
자료형[][] 배열명 ;
자료형 배열명[][] ;
자료형[] 배열명[]; // 가독성 별로, 비추
[]
배열 기호 하나가 1차원을 의미하고, 개수는 차원 의미
→ 3개 있으면, 3차원
자료형[ ][ ] 배열명 = new 자료형[행크기][열크기];
int[][] arr = new int[3][4];
자료형 배열명[ ][ ] = new 자료형[행크기][열크기] ;
int arr[][] = new int[3][4];
자료형[ ] 배열명[ ] = new 자료형[행크기][열크기] ;
→ new 이후가 실제 할당 부분
// 예시
int [][] arr = new int[2][4];
int[][]
을 참조하는 변수 arr을 선언
Heap 영역에 새롭게 2행 4열(가로 2줄, 세로4줄)에 int
2차원 배열을 할당(생성)
생성된 int
2차원 배열의 시작 주소를 arr에 대입
즉, 2차원 배열은 참조형의 참조형이다.
(2차원 배열 참조 변수 == 1차원 배열 참조변수의 묶음을 참조)
🟢 참고
String의 메모리 구조도 참조형을 참조하는 형태인데, 2차원 배열은 아님
인덱스
를 이용한 초기화arr[0][0] = 1;
arr[1][1] = 2;
for문
을 이용한 초기화for(int i = 0; i < arr.length; i++) {
for(int j = 0; j < arr[i].length; j++) {
arr[i][j] = j;
}
}
int[][] arr = {{1, 2, 3, 4}, {5, 6, 7, 8}};
int[][] arr = new int[][] {{1, 2, 3, 4}, {5, 6, 7, 8}};
String fruit[][] = {{"사과", "딸기", "석류"}, {"바나나", "참외", "레몬"}};
: 다차원 배열 생성 시 마지막 배열차수의 크기를 지정하지 않고, 나중에 서로 크기가 다른 배열로 지정한 배열.
2차원 가변 배열 예시
자료형[ ][ ] 배열명 = new 자료형[행크기][ ];
행의 크기는 설정하고, 열의 크기는 설정하지 않음