본문 바로가기

프로그래밍언어/JAVA

[JAVA] 다차원 배열

반응형

배열은 지금까지 예시로 들었던 1차원뿐만 아니라 2차원 이상의 다차원 배열도 선언하여 사용할 수 있다. 메모리의 용량이 허용되는 한에서 차원은 제한이 없지만 주로 1, 2차원의 배열만 사용된다.

 

 

1. 2차원 배열의 선언과 인덱스

 

2차원 배열을 선언하는 방법은 1차원 배열과 같다. 다만 대괄호가 한쌍 추가된다.

 

선언 방법 예시
타입[][] 변수이름; int[][] arr;
타입 변수이름[][]; int arr[][];
타입[] 변수이름[]; int[] arr[];

※ 2차원보다 더 고차원으로 가는 경우 그만큼 대괄호 쌍을 추가해주면 된다.

 

2차원 배열의 선언과 생성은 다음과 같이 할 수 있다.

 

int[][] arr = new int[2][2]; // 2행 2열의 2차원 배열을 생성한다.

 

위의 예제를 실행하면 다음과 같은 공간이 생성된다.

 

2x2 메모리 공간 생성

 

2 2열의 int 값을 저장할 수 있는 공간이 생성된다. 각 공간은 int의 기본값인 0으로 초기화된다.

 

- 2차원 배열의 index

 

2차원 배열은 행과 열로 구성되어 있기 때문에 index도 행과 열에 맞춰 각각 하나씩 존재한다. 각각의 인덱스의 범위는 '0 ~ (/열의 길이 - 1)'이다. 그리고 해당 인덱스에 접근하는 방법은 'arr[ index][ index]'이다.

 

 

2. 2차원 배열의 초기화

 

2차원 배열과 괄호를 사용해서 생성과 초기화를 동시에 할 수 있다.

 

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

 

위의 예제를 실행하여 생성되는 배열은 다음과 같은 테이블 형식으로 구성된다.

 

3x3 배열에 값들이 입력되어있다.

 

실제적인 메모리에서는 '배열의 배열'로 구성된다.

 

각 행을 가리키는 배열이 또 다른 1차 배열들을 가리키고 있다.

 

여러개의 1차원 배열을 묶어서 하나의 배열로 만든 것이다. 여기서 배열의 length의 값은 행의 길이가 된다. 열의 길이의 경우는 arr[i].length를 사용하여 구할 수 있다.

 

for문과 length를 이용해서 2차원 배열을 초기화하는 경우는 다음과 같이 작성할 수 있다.

 

for(int i = 0; i < arr.length; i++) {
	for(int j = 0; j < arr[i].length; j++) {
		arr[i][j] = i * j;
	}
}
// 배열의 행과 열의 길이를 이용하여 반복문을 돌리며 배열의 값을 초기화한다.

 

 

 

3. 가변 배열

 

자바에서는 다차원 이상의 배열이 여러 배열을 다차원으로 연결하는 형태로 처리하기 때문에 이를 이용하여 자유로운 형태의 배열을 구성할 수 있다.

다차원 배열을 생성할 때 전체 배열 차수 중 마지막 차수의 길이를 지정하지 않고 추후에 각기 다른 길이의 배열을 생성함으로써 고정된 형태가 아닌 보다 유동적인 가변 배열을 구성할 수 있다.

 

int[][] arr = new int[5][];
arr[0] = new int[1];
arr[1] = new int[2];
arr[2] = new int[3];
arr[3] = new int[4];
arr[4] = new int[5];
// 행의 길이가 5인 배열의 각 행에 서로 다른 길이의 배열을 생성한다.
반응형

'프로그래밍언어 > JAVA' 카테고리의 다른 글

[JAVA] 변수와 메서드  (0) 2021.08.31
[JAVA] 클래스와 객체  (0) 2021.08.30
[JAVA] String 배열  (0) 2021.08.24
[JAVA] 배열 (Array)  (0) 2021.08.24
[JAVA] 반복문 - for, while, do-while  (0) 2021.08.22