Java

KH 교육과정 (7일차) 자바_ 배열 실습 및 2차원 배열

최종군 2024. 6. 19. 20:43

자바의 2차원 배열은 배열의 배열로, 행(row)과 열(column)로 구성된 테이블 형태의 데이터를 저장할 수 있는 배열입니다. 2차원 배열은 일반적으로 행과 열을 사용하여 데이터를 관리하며, 주로 행렬, 테이블, 게임 보드 등의 데이터를 저장하는 데 사용됩니다.

2차원 배열 선언 및 초기화

2차원 배열을 선언하고 초기화하는 방법은 여러 가지가 있습니다. 다음은 그 예시입니다:

  1. 정적 초기화 (Static Initialization)

java

int[][] array = {
    {1, 2, 3},
    {4, 5, 6},
    {7, 8, 9}
};
  1. 동적 초기화 (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;
  1. 가변 배열 (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