Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

자바(Java)는 다차원 배열을 지원할까? 핵심 개념 총정리

자바는 다차원 배열을 지원하나요?

결론부터 말하면 아니요, 자바는 엄밀한 의미의 다차원 배열(multi-dimensional array)을 직접 지원하지 않습니다.

  • 자바가 실제로 지원하는 것은 '배열의 배열(array of arrays)' 구조입니다.
  • 따라서 자바에서 흔히 말하는 2차원 배열은 사실 1차원 배열들을 담고 있는 배열에 불과합니다.

2차원 배열 선언 예시

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

위 코드는 길이가 4인 int형 1차원 배열 2개를 참조하는 배열을 생성합니다. 겉보기에는 2행 4열의 표처럼 보이지만, 내부적으로는 배열 안에 또 다른 배열이 들어 있는 구조입니다.

배열 요소에 접근하는 방식

  • arr[i] 표현식은 i번째 1차원 배열 전체를 선택하고, arr[i][j] 표현식은 그 배열 안에서 j번째 요소를 선택합니다.
  • 각 차원의 인덱스는 0부터 해당 차원의 길이(length)까지의 범위를 가지며, 실제로 사용할 수 있는 유효 인덱스는 0 ~ length-1입니다.
  • 배열에는 별도의 대입 연산자가 없습니다. 즉, 배열이 한 번 생성(할당)되면 차원의 수와 각 차원의 크기는 고정되며 이후에는 변경할 수 없습니다.

참고: 비정방형(Jagged) 배열

'배열의 배열'이라는 특성 덕분에 자바에서는 각 행의 길이가 서로 다른 비정방형 배열(jagged array)도 손쉽게 만들 수 있습니다.

int[][] jagged = new int[2][];
jagged[0] = new int[3];
jagged[1] = new int[5];

이처럼 자바의 다차원 배열은 유연성을 제공하지만, C 언어 계열의 연속된 메모리 블록 기반 다차원 배열과는 구조적으로 다르다는 점을 이해하고 사용하는 것이 중요합니다.