1. 2차원 배열이란
자료형이 같은 1차원 배열의 묶음 으로 배열안에 다른 배열이 존재
할당된 공간마다 인덱스 번호 두개 부여, 각 인덱스 번호는 행과 열을 의미한다고 볼수있다.
2. 선언 및 할당
자료형[][] 배열명;
자료형 배열명[][];
자료형[] 배열명[]
배열명 = new 자료형 [행크기][열크기];
ex) int[][] arr= new int[2][3];
arr의 구조
열1 | 열2 | 열3 | |
행1 | [0,0] | [0,1] | [0,2] |
행2 | [1,0] | [1,1] | [1,2] |
배열명에는 배열의 주소가 있으며,
HEAP 영역에 있는 해당 주소에는 각 행의 주소값이 들어가있다.
그리고 그 행의 주소에는 실재 값이 있는 형태이다.
STACK | -> | HEAP | ||||||
arr (0x123) |
(0x123)= | arr[0](0x678) |
->
-> |
(0x678)= | arr[0,0] 값 | arr[0,1]값 | arr[0,2]값 | |
arr[1](0x543) | (0x543)= | arr[1,0]값 | arr[1,1]값 | arr[1,2]값 |
또한 각 행마다 열의 크기를 다르게 지정할 수있다.
자료형[][] 배열명 = new 자료형[행크기][];
배열명[행의 인덱스] = new 자료형[열크기];
예시)
for문과 Scanner를 사용하여 각행마다 다른 크기지정가능하다.
Scanner sc = new Scanner(System.in);
int[][] arr2 = new int [3][];
for(int i = 0; i<arr2.length; i++){
System.out.print(i +"행의 열의 크기를 설정하세요 : " );
arr2[i] = new int[sc.nextInt()];
}
-> 2, 3, 4 를 입력할 경우 0행에는 2열, 1행에는 3열, 2행에는 4열의 크기를 가진 2차원 배열이 생성된다.
2. 초기화
1)인덱스를 이용한 초기화
배열명[행번호][열번호] = 값;
ex) arr[0][1] = 1;
2) for문을 이용한 초기화
int num = 0;
for(int row =0; row < arr.length; row++){<-arr.length는 행의 크기를 가져온다.
for(int col = 0; col < arr[row].length; col++){ <-arr[row].length는 row행에 있는 열 크기를 가져온다.
arr[row][col] = num;
num++;
}
}
3) 선언과 동시에 초기화
자료형[][] 배열명 = {{값1,값2,값3},{값1,값2,값3,값4}}; -> 2행의 배열이 생성되고,
0번 인덱스 행은 3개의 열이 , 1번 인덱스 행은 4개의 열이 생성된며,
각 인덱스에는 각각의 값이 저장된다.
또는
자료형[][] 배열명 = new 자료형[][]{{값1,값2,값3},{값1,값2,값3,값4}};
과 동일하다.
4)출력방법
특정 인덱스 출력
System.out.print(배열[행번호][열번호]);
전체 출력은 출력은 중첩 포문을 이용해 출력한다.
for(int i = 0; i < 배열.length; i++){
for(int j =0; j < 배열[i].length; j++){
System.out.println(배열[i][j]);
}
}
키보드를 이용해 행마다 다른 배열 크기를 지정하고, 배열에 0부터 1씩 증가 한 값을 넣고, 출력해보자.
'JAVA > 배열 및 2차원배열' 카테고리의 다른 글
배열의 복사 (0) | 2019.12.14 |
---|---|
배열 (0) | 2019.12.14 |