본문 바로가기
IT/Java

Java 다차원 배열

by Jeami 2013. 6. 24.
반응형


배열의 개념은 의외로 간단합니다.

하지만 사용법은 어지간히 헤깔리는게 아닙니다 특별히 초보자분들에겐 말이죠. 안드로이드 계산기 어플의 원리도 배열이 필수요소입니다. 물론 안드로이드에서 배열을 사용하는 방법은 조금의 차이가 있긴 하지만, 기본적으로 Java를 사용하기 때문에 원리를 똑같죠.

하지만 배열을 배웠다고해서 배열을 사용할수 있는 것은 아니라고 생각됩니다. 뭐든지 마찬가지이지만 결국은 연습 밖에 없는 것 같네요. 할수있을때까지 해보는 것 밖에 방법이 없습니다. 그러다가 안되면 결국 포기해버리게 되겠죠. 

포기하지 말고 배열에 대해 차근차근 알아보도록 하겠습니다



다차원 배열

다차원 배열은 곧 2차원 배열을 의미합니다. 같은 말이죠. 다차원이 2차원을 포함하고 있는 개념이겠네요^^

다차원 배열은 1차원 배열의 확장입니다. 뭐 기본원리는 같다고 하지만 그래도 어렵네요. 배열이란 것은..ㅋㅋ

다시말해 다차원 배열은, 배열의 배열입니다. 

1차원 배열과 마찬가지로, 사용방법은 배열을 선언하는 것과 동시에 초기화하는 것과 선언한 후 하나씩 초기화해주는 것 이렇게 두가지가 있습니다. 


먼저 배열을 선언하는 것과 동시에 초기화 하는 방법입니다.

int[ ][ ] a = new int[ ][ ] { 1, 2, 3 }, { 6, 7, 8 } ;

int[ ][ ] a = { { 1, 2, 3 }, { 6, 7, 8 } } ;

행과 열의 개념으로 배열을 바라보시면 이해하기에 용이합니다. 위의 배열을 어떻게 해석하느냐면요, "2행3열"이라고 생각해보세요. 어떤 뜻인지 이해되시나요?

위의 두 가지 방법 모두 사용할 수 있습니다. 대개 첫번째 방법을 선호합니다. 물론 프로그래머 마음^^


선언한 후 하나씩 초기화 해주는 방법입니다.

int[ ][ ] a = new int[2][3] ; 

a[0][0] = 1 ;

a[0][1] = 2 ;

a[0][2] = 3 ;

a[1][0] = 1 ;

a[1][1] = 2 ;

a[1][2] = 3 ;

이 방법을 보면 왜 배열을 행과열 형식으로 이해하는것이 좋은지 잘 보여줍니다. 자바는 기본적으로 초기화시켜주지 않으면 "0"부터 시작됩니다. 따라서 [2][3]이 무엇을 뜻하는지 아실 수 있을 것입니다.

[2]는 배열의 앞 첨자변수 즉 a[0][0]에서 앞 부분의 [0]의 갯수를 의미합니다. 2개!! 라는 의미입니다. 2개이기 때문에 0,1 이 되겠지요? 

[3]은 배열의 뒤 첨자변수 즉 a[0][0]에서 뒷 부분의 [0]의 갯수를 의미하고, 3개!! 라는 의미입니다. 3개이기 때문에 0,1,2 가 되겠지요?

이 둘을 합쳐버리면 결국, 앞 첨자변수가 [0]일 때 뒤 첨자변수가 [0],[1],[2] 이렇게 세 개가 들어가게 됩니다.

이해가 좀 되실까요?

왜 다차원 배열이 배열의 배열인지 알 수 있는 대목이 아닐까 싶습니다. 


간단한 예를 들어 배열을 좀 더 살펴보겠습니다.

자바 다차원배열

실행결과를 바로 살펴보면 이해하기가 수월합니다. 실행결과는 아래와 같습니다.



*.length 는 길이를 의미한다고 했죠?

arr은 arr[0]과 arr[1]을 가지고 있습니다. 그리고 arr[0]은 arr[0], arr[1], arr[2] 를 갖고 있습니다. 마찬가지로 arr[1]도 arr[0], arr[1], arr[2]을 가지고 있습니다. 말로만 설명하니 이해가 좀 어렵죠? 다시한번 살펴볼까요?

arr => arr[0] => arr[0]

          arr[1]

          arr[2]

         arr[1] => arr[0]

          arr[1]

          arr[2]

어떤가요? 조금 더 보시기 편한가요?

따라서 arr.length = 2 그리고 arr[0].length = 3 , arr[1].length = 3 이 되는 것입니다.

이것이 전부입니다. 다차원 배열의 전부^^

3차원 4차원 배열도 이렇게 진행됩니다.



반응형

'IT > Java' 카테고리의 다른 글

Java의 Generic(제너릭) 원리(간단정리)  (0) 2013.06.25
Generic 제너릭  (0) 2013.06.25
Java 배열 매개변수  (0) 2013.06.23
This()  (0) 2013.06.23
Static 메모리만의 특징  (0) 2013.06.23

loading