눈여겨 볼 것은, 2차원 배열이기 때문에 행별로 { }로 감싸서 표시해야 하다.
만약, { } 표시를 하지 않을 경우에는 다음과 같이 컴파일 오류로 표시된다.
선언된 2차원 배열의 각 요소에 접근하는 것은 for-loop을 2번 중첩하면 된다.
2차원 배열의 길이
2차원 배열의 길이는 1차원 배열과는 조금 다르다.
예를 들어 아래와 같은 3x3 배열을 예를 들어보자.
전체적인 공간은 9개이다.
int[][] a = new int[3][3];
하지만, a.length는 행의 개수를 의미하여, 3이 되다.
전체 공간의 개수 9가 아님에 유의하자.
각 행에 들어있는 열의 개수는 각 행별로 확인해야 한다.
예를 들어, 0번 행의 경우에는 a[0].length와 같다.
아래는 2차원 배열에 .length를 사용했을 때의 출력결과를 보여준다.
이렇게 되는 이유는 아래 그림을 보면 다소나마 쉽게 이해할 수 있다.
a.length는 a안에 있는 요소의 개수 이므로 3이 되고,
a[0].length는 그 안에 있는 요소의 개수이므로 3이 되는 이치이다.
3차원 배열의 선언
2차원배열 보다 [] 를 하나 더 붙이면 3차원 배열을 만들 수 잇다
이것을 그림으로 표시해 보면 아래와 같은 입체를 생각해볼 수 있다.
모두 12개( = 3*2*2)의 사각형으로 구성된 입체이다.
3차원 배열에 대한 초기화는 조금 신경써서 해야 한다.
c[3][2][2]의 경우에,
우선 { }으로 3등분을 한다.
그리고, 각 { }안에서, { }으로 다시 2등분을 한다.
가장 안 쪽의 { }안에, 숫자 2개씩을 쓰면 된다.
이것을 그림으로 보여주면 아래와 같다.
실제로 초기화 한 예는 아래와 같다.
그리고, 3차원 배열의 각 요소를 접근하는 것은
2차원 배열과 마찬가지지만, for-loop을 한 번 더, 즉 3번을 중첩하여야 한다.
3차원 배열의 길이
위에서 2차원 배열의 길이를 설명했다.
3차원 배열의 길이도 아래 그림과 같은 의미를 같는다.
배열 이름에다가 .length를 붙이면, 가장 큰 그룹의 개수를 의미하며,
차원이 하나씩 들어갈 수록 그 안에 있는 서브그룹의 개수들을 의미하게 된다.
아래 그림에서 a.length는 가장 큰 그룹의 개수이므로 3이 되고,
a[0].length는 그 안에서의 서브그룹의 개수이므로 2,
마지막으로 a[0][0]는 또 다시 그안에서의 서브그룹의 개수이므로 2가 되는 것이다.
따라서, 전체 공간의 개수를 알려면 각 단계별 개수를 모두 곱한 값이 된다.
3차원 배열의 크기를 출력해 보는 아래 예제를 살펴보자.
c는 3*2*2 크기를 갖는 3차원 배열이다.
이 때, c.length는 가장 큰 그룹의 개수를 의미한다.
그리고 c[0]은 0번째 그룹 안에서의 서브그룹의 개수, 2를 의미한다.
마지막으로 c[0][0]는 가장 안쪽 그룹에 있는 숫자의 개수이므로 2가 된다.
'Java프로그래밍' 카테고리의 다른 글
객체기반SW설계 15차시: 클래스(Class) 개념 (0) | 2015.03.14 |
---|---|
객체기반SW설계 14차시: Exception 처리 (0) | 2015.03.14 |
객체기반SW설계 12차시: 배열과 for each문 (3) | 2015.03.14 |
객체기반SW설계 11차시: Scanner, 연산자와 If문 (0) | 2015.03.14 |
객체기반SW설계 10차시: Java InputStreamReader (0) | 2015.03.14 |