1. 2차원(정방행렬) 배열
- 가로 및 세로 방향으로 정렬된 배열
※ 선언 시, 배열의 첫 번째 특징(동일한 자료형 저장)이 나타나야 함
2. 2차원(다차원) 배열의 선언
- 자료형[ ][ ] 변수명 or 자료형 변수명[ ][ ] or 자료형[ ] 변수명[ ]
3. 2차원(정방행렬) 배열의 객체 생성
- 방법 1 (배열 객체의 생성 + 값 대입)
// 기본 문법 구조
자료형[][] 참조변수명 = new 자료형[행의 길이][열의 길이];
참조변수명[0][1] = 값;
참조변수명[0][1] = 값;
...
참조변수명[행의 길이 - 1][열의 길이 - 1] = 값;
// Example
int[][] arr = new int[3][4];
arr[0][0] = 1;
arr[0][1] = 2;
arr[0][2] = 3;
arr[1][0] = 4;
arr[1][1] = 5;
arr[1][2] = 6;
System.out.println(arr.length); // 3 (열의 개수)
System.out.println(arr[0].length); // 4 (0열의 행의 개수)
System.out.println(arr[1].length); // 4 (1열의 행의 개수)
- 방법2. 2차원 배열 객체의 행 성분(1차원 배열)만 생성 or 각 행에 열 성분(1차원 배열) 생성
// Example
int[][] arr = new int[3][];
arr[0] = new int[4];
arr[1] = new int[4];
arr[2] = new int[4];
// or
int[][] arr = new int[3][];
arr[0] = new int[]{1, 2, 3};
arr[1] = new int[]{4, 5, 6};
arr[2] = new int[]{7, 8, 9};
- 방법 3. (값 대입) : 자료형과 대입할 값만 입력
// 기본 문법 구조
자료형[][] 참조변수명 = new 자료형[][] {{값, 값, ..., 값}, ..., {값, 값, ..., 값};
// Example
int[][] arr = new int[][] {{1, 2}, {3, 4, 5}};
- 방법 4. (값 대입) : 대입할 값만 입력
// Example
int[][] arr = {{1, 2}, {3, 4, 5}};
4. 2차원(비정방행렬) 배열
- 행마다 열의 개수가 서로 다른 2차원 행렬
※ 비정방 행렬은 활용도가 낮음
- 방법 1. 2차원 배열 객체의 행 성분(1차원 배열)만 생성 or 각 행에 열 성분(1차원 배열) 생성
// Example
int[][] arr = new int[2][];
arr[0] = new int[2];
arr[0][0] = 1;
arr[0][1] = 2;
arr[1] = new int[3];
arr[1][0] = 3;
arr[1][1] = 4;
arr[1][2] = 5;
// or
int[][] arr = new int[2][];
arr[0] = new int[]{1, 2};
arr[1] = new int[]{3, 4, 5};
- 방법 2. (값 대입) : 자료형과 대입할 값만 입력
// 기본 문법 구조
자료형[][] 참조변수명 = new 자료형[][] {{값, 값, ..., 값}, ..., {값, 값, ..., 값};
// Example
int[][] arr = new int[][] {{1, 2}, {3, 4 ,5}};
- 방법 3. (값 대입) : 대입할 값만 입력
※ 방법 3의 경우 1차원 배열과 마찬가지로 선언과 동시에 값을 대입하는 경우만 가능 (분리 불가능)
// 기본 문법 구조
자료형[][] 참조변수명 = {{값, 값, ..., 값}, …, {값, 값, ..., 값};
// Example
int[][] arr = {{1, 2}, {3, 4 ,5}};
5. 2차원 배열의 출력
- for 반복문을 이용한 2차원 배열 데이터 읽기
※ 다차원 배열 읽기는 for문의 중첩으로 주로 처리
// Example
int[][] arr = {{1, 2, 3}, {7, 8, 9}}; // 2행 3열의 2차원 배열 (다차원 배열 이라고도 함)
for (int row = 0; row < arr.length; row++) { // row가 행의 개수보다 작아야함
for (int col = 0; col < arr[i].length; col++) { // col은 각 행의 길이보다 작아야함
System.out.println(arr[row][col]);
}
}
// 결과 :
// 1
// 2
// 3
// 7
// 8
// 9
- for-each 반복문을 이용한 2차원 배열 데이터 읽기
// Example
int[][] arr = {{1, 2}, {3, 4, 5}};
for (int[] row : arr) {
for (int col : row) {
System.out.println(col);
}
}
// 결과 :
// 1
// 2
// 3
// 4
// 5
- 연습문제
// 3행 4열 2차원 배열 만들기 (배열명 : arr)
// 배열의 각 칸에는 순차적으로 1부터 12까지 저장
// 단, 저장은 for문의 중첩을 활용해 처리
// 저장을 마친 뒤, 다시 for문의 중첩으로 읽기
int[][] arr = new int[3][4];
int number = 1;
for (int row = 0; row < arr.length; row++) {
for (int col = 0; col < arr[row].length; col++) {
arr[row][col] = number;
number++;
}
}
for (int i = 0; i < arr.length; i++) {
for (int = j; j < arr[i].length; j++) {
System.out.println(arr[i][j]);
}
}
// 결과 :
// 1
// 2
// 3
// 4
// 5
// 6
// 7
// 8
// 9
// 10
// 11
// 12
'Programming Language > Java' 카테고리의 다른 글
참조자료형 - 5. String 참조자료형 (0) | 2022.07.07 |
---|---|
참조자료형 - 4. main( ) 메소드 매개변수 (0) | 2022.07.07 |
참조자료형 - 2. 1차원 배열 (세 가지 초기값 부여방식 및 출력하기) (0) | 2022.07.07 |
참조자료형 - 1. 1차원 배열 (배열의 특징/선언/객체생성/메모리구조) (0) | 2022.07.06 |
제어문과 제어키워드 - 3. 제어키워드 (0) | 2022.07.06 |