프로그래밍 단어를 물리적 또는 수학적으로 변환해보자. 변수는 하나의 점과 같고, 연관 변수의 모임인 배열은 변수(점)가 모여 형성된 것이므로 마치 선과 같은 형태를 띈다. 선이 모이면 면이 형성되는데, 프로그래밍에서도 배열(선)이 모이면 마치 면과 유사한 형태의 결과가 출력된다. 이 면과 같은 형태는 프로그래밍에서 다차원 배열이라는 것으로 구현할 수 있다. 이번 포스팅에서는 Java 다차원 배열에 대해 간단히 알아보려 한다.
1. 다차원 배열과 메모리 할당
일반 배열. 즉 일차원 배열의 메모리 형태는 아래와 같이 나타난다.
이러한 배열이 하나 더 추가된다고 가정해보자.
만약 arr과 arr2 배열변수에 대한 연산을 진행하는 작업이 빈번하다고 하면, 이 두 변수를 하나의 배열로 묶어주는 것도 가능할 것이다. 아래와 같이.
위의 방식으로 여러 배열을 또 다른 배열 내에 저장하는 것이 가능하다. 위와 같이 생성된 배열의 배열을 이차원 배열이라고 한다. 이차원 배열의 선언과 생성, 그리고 초기화 방법은 아래와 같다.
[ 이차원 배열 선언 ]
(변수타입) [] [] 이차원배열명 ;
[ 이차원 배열 생성]
이차원배열명 = new 변수타입 [이차원배열크기] [이차원 배열[index] 배열의 크기] ;
[이차원 배열 초기화]
(변수타입) [] [] 이차원배열명 = new 변수타입 [이차원배열크기][] { {이차원배열[0] 배열값 }, {이차원배열[1] 배열값}, ...};
* 초기화 시, "new 변수타입 [이차원배열크기][]" 는 생략 가능.
이차원 배열이 초기화 없이 생성되면 메모리에서는 이차원 배열 크기만큼의 메모리 할당되며, 이차원배열 변수명이 할당 메모리의 첫 주소를 참조하게 된다. 또한 이차원 배열에 초기화가 진행되지 않는 경우, 기본값으로 Null 값이 저장된다.
이차원 배열의 첫 index에 Java 문자를 배열 형태로 저장한다고 해보자. 그럼, 첫 index에 저장된 배열에 대해 메모리가 별도로 할당되고, arr[0]은 할당된 메모리의 첫 번째 주소를 참조하게 된다. 또한 이 배열에 초기화된 문자들은 할당된 메모리에 저장된다.
다음 index에 Cat이라는 문자를 배열 형태로 저장한다고 하면, 새로 생성된 배열에 대해 메모리가 할당되며, arr[1] 역시 새로 할당된 메모리의 첫 주소를 참조한다. 또한 arr[1]에 저장된 배열 역시 이 할당된 메모리에 저장된다.
2. for 문으로 이차원 배열 출력
이차원 구조의 메모리 배열 구조를 보면 알겠지만, 이차원 배열명에 대해 for 문을 사용하여 인자를 출력하면, 이차원 배열에 저장된 배열의 주소가 나타나게 된다.
따라서 실제로 저장된 배열 내의 배열 값을 출력하기 위해서는 for 문을 이중으로 중첩하여 사용해야 한다.
이차원 배열 외에 필요한 경우 삼차원 배열, 사차원 배열을 생성하는 것도 가능하지만, 삼차원 배열 이상을 사용하는 경우는 예시가 많지 않다. 이차원 배열의 경우, 표(Table)를 만들어야 하는 경우나 빙고게임, 행렬(matrix)계산, 혹은 Python에서 사용하는 Dictionary를 구현하는데 사용하기도 한다.
다음 포스팅에서는 Java에서 키보드 입력값을 받는 방법에 대해 알아보려 한다.
Fin.
'Java > Java Basic' 카테고리의 다른 글
[Java Basic] 12. Java 클래스와 객체 개요 (0) | 2022.07.04 |
---|---|
[Java Basic] 11. 입력값 받기 - System.in과 Scanner 클래스 (0) | 2022.07.03 |
[Java Basic] 9. 배열 3 - 문자열 배열과 String 타입 (0) | 2022.07.01 |
[Java Basic] 8. 배열 2 - 배열 관련 작업 (0) | 2022.06.30 |
[Java Basic] 7. 배열 1 - 선언, 초기화, 생성, 향상된 for문 (0) | 2022.06.28 |
댓글