Java

다차원 배열

공부 2021. 6. 17. 10:05

#다차원 배열

메모리의 용량이 허용하는 한 차원의 제한은 없지만,, 주로 1,2,차원 배열이 사용되므로 2차원 배열만 잘 이해하면 3차원 이상의 배열도 어렵지 않게 다룰 수 있다.

 

#선언 방법

2차원 배열을 선언하는 방법은 다음과 같다

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

 

2차원 배열은 주로 테이블 형태의 데이터를 담는데 주로 사용한다

 

만일 4행 3열의 데이터를 담기 위한 배열을 생성하려면 다음과 같이 한다

ex) int[][] score = new int[4][3];

위는 곧 4행 3열의 배열이 생성된다.. 

생성된 배열의 요소는 int타입이면 기본값인 0으로 초기화 된다..

배열의 각 요소에는 배열요소타입의 기본값이 자동적으로 할당된다(초기화x)

 

#인덱스

2차원 배열은 행(row)과 열(column)으로 구성되어 있기 때문에 index 도 행과 열에 각 하나씩 존재한다 

2차원 배열의 각 요소에 접근하는 방법은 '배열이름[행index][열index]로 접근할 수 있다

 

#배열의 초기화

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

다만 1차원 배열보다 괄호를 한번 더 써서 행별로 구분해 준다

2차원 배열 초기화 방법

 

#배열.length의 값

2차원 배열은 여러개의 1차원 배열을 묶어서 하나의 배열로 만든 것이다 

length의 값은 배열이 참조하고 있는 배열의 길이가 얼마인가를 세어보면 된다

length를 한번 출력해보자

 

아래와 같은 값이 나왔다. 결국 2차원 배열의 length는 행의 갯수라는 것을 알 수 있다

 

하지만 열을 기준으로도 구할 수도 있다.

 

참조변수 score[1]이 참조하고 있는 배열의 길이는 3인된다 

score[0]도 동일하다

그래서 2차원 배열을 초기화하는 방법은

2차원 배열의 초기화

위와 같이 초기화 해줄 수 있다

score에는 모든 행과 열이 10으로 초기화 되어있을 것이다

 

#향상된 for문

2차원 배열의 모든 행과 열의 합을 이중for문으로도 나타낼 수 있지만 향상된 for문으로도 표현이 가능하다

for(int[] tmp :score){

for(int i : tmp){

sum + =i;

     }

} 합을 담을 그릇 sum과 score의 각 요소를 담을 tmp를 선언해주어 위와 같이 표현한다

 

향상된 for문으로 배열의 각 요소에 저장된 값들을 순차적으로 읽어올 순 있지만 배열에 저장된 값을 변경 할 순 없다