자바의 2차원 배열은 배열의 배열로, 행(row)과 열(column)로 구성된 테이블 형태의 데이터를 저장할 수 있는 배열입니다. 2차원 배열은 일반적으로 행과 열을 사용하여 데이터를 관리하며, 주로 행렬, 테이블, 게임 보드 등의 데이터를 저장하는 데 사용됩니다.
2차원 배열 선언 및 초기화
2차원 배열을 선언하고 초기화하는 방법은 여러 가지가 있습니다. 다음은 그 예시입니다:
- 정적 초기화 (Static Initialization)
java
int[][] array = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
- 동적 초기화 (Dynamic Initialization)
java
int[][] array = new int[3][3]; // 3x3 크기의 2차원 배열 선언
// 배열 요소 초기화
array[0][0] = 1;
array[0][1] = 2;
array[0][2] = 3;
array[1][0] = 4;
array[1][1] = 5;
array[1][2] = 6;
array[2][0] = 7;
array[2][1] = 8;
array[2][2] = 9;
- 가변 배열 (Jagged Array)
자바에서는 2차원 배열의 각 행이 다른 길이를 가질 수 있습니다. 이를 가변 배열이라고 합니다.
java
int[][] jaggedArray = new int[3][];
jaggedArray[0] = new int[2]; // 첫 번째 행에 2개의 열
jaggedArray[1] = new int[3]; // 두 번째 행에 3개의 열
jaggedArray[2] = new int[1]; // 세 번째 행에 1개의 열
// 배열 요소 초기화
jaggedArray[0][0] = 1;
jaggedArray[0][1] = 2;
jaggedArray[1][0] = 3;
jaggedArray[1][1] = 4;
jaggedArray[1][2] = 5;
jaggedArray[2][0] = 6;
2차원 배열의 사용
2차원 배열은 행과 열의 인덱스를 사용하여 요소에 접근합니다. 예를 들어, array[1][2]는 배열의 두 번째 행의 세 번째 요소를 나타냅니다.
다음은 2차원 배열을 순회하는 예제입니다:
java
public class TwoDimensionalArrayExample {
public static void main(String[] args) {
int[][] array = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
// 2차원 배열 요소 순회
for (int i = 0; i < array.length; i++) { // 행 반복
for (int j = 0; j < array[i].length; j++) { // 열 반복
System.out.print(array[i][j] + " ");
}
System.out.println(); // 각 행이 끝날 때 줄바꿈
}
}
}
출력 결과
1 2 3
4 5 6
7 8 9
이 예제에서는 array.length를 사용하여 행의 수를 얻고, array[i].length를 사용하여 각 행의 열의 수를 얻어 배열을 순회합니다.
이와 같이, 자바의 2차원 배열은 행과 열을 사용하여 데이터를 저장하고 관리할 수 있는 유용한 데이터 구조입니다.
먼저 배열의 간단한 설명이다
배열과 2차원 배열의 차이 :
배열 : 같은 자료형 의 여러 개의 데이터 데이터 값을 저장하는 공간이다
1차원 배열 선언 :
자료형[] 변수명(배열명);
ex) int[] arr;
배열 할당 :
변수명(배열명) = new 자료형[배열크기(데이터크기)];
int[] arr = new int[배열크기(데이터의 크기)]
배열 선언과 동시에 할당
(1) 자료형[] 배열명 = new 자료형[] {값1, 값2, 값3, ...};
String[] str = new Stirng[]{값1,값2,값3}
(2) 자료형[] 배열명 = {값1, 값2, 값3, ...};
char[] chr = {값1,값2,값3};
(3) 자료형[] 배열명 = new 자료형[배열 크기]; 배열명[0] = 값1; 배열명[1] = 값2; 배열명[n-1] = 값n;
int[] arr = new int[배열의 크기];
배열의 데이터 대입
배열명[0] = 값1; 0 인덱스에 값1를 대입을 한다.
대입연산자를 사용한다
배열 복사 :
얕은 복사 : 배열의 주소값만 복사하여 실제 데이터는 한 곳에서 관리한다
데이터가 변경되면 원본 배열에도 영향을 준다
int[] arr1 = new int[] {1, 2, 3};
int[] arr2 = arr1;
arr1 = 3의 배열 크기를 가진 원본 배열이다
int[] arr2 = arr1;
깊은 복사 : 새로운 배열 객체를 생성하여 기존 배열의 데이터를 복사.
방법 1 반복문을 통해서 복사
double[] origin = new double[] {163.5, 177.2, 180.2};
double[] copy = new double[origin.length];
for(int i=0; i<origin.length; i++) {
// origin 배열의 i번째 위치의 데이터를
// copy 배열의 i번째 위치에 저장
copy[i] = origin[i]; }
대입 연산자는 오른쪽에 있는 값이 왼쪽으로 대입이 되기 때문에
원본을 복사할 copy[]배열을 좌측에 둔다
(2) 복사본 배열 = 원본배열.clone();
(3) 복사본 배열 = Arrays.copyOf(원본배열, 복사할 길이); arr1, arr1.length
(4) System.arraycopy(원본배열명, 복사시작할인덱스, 복사본배열명, 복사본배열의 복사될 시작인덱스, 복사할갯수);
2차원 배열 :
배열 안에 배열 1차원 배열의 묶음
선언 표현식 자료형[][] 배열명;
int[][] arr;
* 할당 표현식 배열명 = new 자료형[행의길이][열의길이];
// 행의 길이 : 1차원 배열의 개수 주소가 각각 다르다
// 열의 길이 : 각 행에 저장된 1차원 배열의 크기
* 배열 선언과 동시에 할당 자료형[][] 배열명 = new 자료형[행의길이][열의길이]; 자료형[][] 배열명 = { {값1, 값2, 값3, ...}, {값1, 값2, 값3, ...}, {값1, 값2, 값3, ...} }
'Java' 카테고리의 다른 글
KH 교육원 Java 클래스 9일차 (0) | 2024.06.21 |
---|---|
자바 프로젝트 (0) | 2024.06.20 |
KH 교육원 개발자 교육과정 (6일차) 배열 실습 (0) | 2024.06.18 |
KH 정보교육원 (5일차) 수업_배열 (0) | 2024.06.18 |
자바 특징 (장단점) (0) | 2024.06.17 |