2차원 배열
앞서 본 배열들은 모두 1차원 배열로 하나의 행으로만 이루어진 배열이다. 2차원 배열은 배열의 배열로 2개 이상의 행과 여러개의 열로 이루어진 배열을 말한다.
크기가 가변적이지 않은 2차원 배열 생성 (일반적인 2차원 배열 생성)
2차원 배열의 선언 및 메모리 할당 방법
타입[][] 배열명 = new 타입[행크기][열크기];
타입 배열명[][] = new 타입[행크기][열크기];
2차원 배열에 값을 저장하는 방법
배열명[행 인덱스][열 인덱스] = 저장할 값;
만약 정수를 4개씩 담을 수 있는 배열을 3개 생성한 2차원 배열 array4 에서 값을 저장하기 위해서 array4[1] = 10 ; 으로 사용한다면 이는 오류를 발생시킨다. array4[1] 은 아래 사진에서 보여지는 하얀색 1 이 칸만을 의미하는 것이다. 즉, 또 다른 1차원 배열을 가리킬 수 있는 참조형 변수이기 때문에 값을 담을 수 없는 공간이다. 위 설명을 예시를 통해서 보자면 다음과 같다.
int[][] array4 = new int[3][4];
// array4[1] = 10; // 오류!
array4[1][1] = 0; // 행인덱스 1에 열인덱스 1을 가진 요소에 접근
다음과 같이 2차원 배열을 선언 및 메모리 할당을 한다면 아래 사진과 같이 Stack 에 메모리가 할당된다. 3개의 행에 각각 4개의 열을 가지고 있는 것이다.
가변크기의 2차원 배열 생성 (2차원 배열의 동적 할당 (열 부분) ) ⭐
위의 경우 같이 모든 행이 동일한 열의 개수를 가지고 있을 필요는 없다. 즉, 가변적으로 각 행에 필요한 만큼 열을 할당할 수 있는데 이를 동적으로 할당한다고 한다.
int[][] array5 = new int[3][]; // 2차원 (열 부분)을 넣지 않으면 전체 배열의 형태만 생성된다.
array5[0] = new int[1]; // 0행에는 1열의 메모리 공간을 할당한다
array5[1] = new int[2]; // 1행에는 2열의 메모리 공간을 할당한다
array5[2] = new int[3]; // 2행에는 3열의 메모리 공간을 할당한다
int[][] array5 = new int [3][] ; 만 봤을 때는 아래와 같이 참조할 공간을 가진 3개의 행만 존재하는 것이다.
2 ~ 4열에서 보이는 코드를 통해서 각 3개의 행에 또 다른 1차원 배열을 가리킬 수 있는 공간들을 할당한 것이다.
2차원 배열 또한 선언과 동시에 초기화가 가능한데 예시를 통해 보자면 다음과 같다.
int[][] array6 = {{1}, {2,3}, {4,5,6}};
동적할당을 통해 만든 가변크기의 2차원 배열을 만든 위의 사진과 같이 0행의 0열에 1을, 1행의 0열에 2, 1행의 1열에는 3을 넣고, 2행에 각각 4, 5, 6을 넣은 것을 알 수 있다.
'JAVA > 자바 문법' 카테고리의 다른 글
[Java] 참조형 타입 (0) | 2023.08.31 |
---|---|
[Java] 객체지향언어 (0) | 2023.08.31 |
[Java] 배열 (0) | 2023.08.29 |
[Java] 반복문 (0) | 2023.08.29 |
[Java] 조건문 (0) | 2023.08.29 |