[Day 3 | Java] 2차원 배열

y♡ding·2024년 10월 16일
0

데브코스 TIL

목록 보기
5/163

🧺 다차원 배열

2차원 배열이란 배열의 요소로 1차원 배열을 가지는 배열로, 자바에서는 2차원 배열을 나타내는 타입을 따로 제공하지 않는다. 대신에 1차원 배열의 배열 요소로 또 다른 1차원 배열을 사용하여 2차원 배열을 나타낼 수 있다.

‣ 2차원 배열

✔️ 선언

  int[][] arr1;
  int arr2[][];
  int[] arr3[];

✔️ 생성

  // 3행 2열의 2차원 배열
     arr1 = new int[3][2];

✔️ 데이터 입력

  arr1[0][0] = 10;
  arr1[0][1] = 20;
  arr1[1][0] = 30;
  arr1[1][1] = 40;
  arr1[2][0] = 50;
  arr1[2][1] = 60;

✔️ 출력

public class ArrayEx10 {
    public static void main(String[] args) {
        // 선언, 생성, 초기화
        int[][] arr1 = new int[][] {{10,20,}, {30, 40}, {40, 50}};
        int[][] arr2 = {{10,20,}, {30, 40}, {40, 50}};

        System.out.println( arr1[0][1]);
        System.out.println( arr1[2][1]);

        System.out.println("arr1 : " + arr1); // 주소값 출력
        System.out.println("arr1[0] : " + arr1[0]);  // 주소값 출력
        System.out.println("arr1[0][0] : " + arr1[0][0]);

        // 행의 개수
        System.out.println("arr1.length : " + arr1.length);
        // 열의 개수
        System.out.println("arr1[0].length : " + arr1[0].length);

        // 전체 데이터 출력
        // for
        // 행 전체에 접근
        for (int i = 0; i < arr1.length; i++) {
            // 각 행에 대한 접근
            for (int j = 0; j < arr1[i].length; j++) {
                System.out.println(arr1[i][j]);
            }
        }
        
        // 향상된 for문
		        for (int[] cols : arr1) {
            for (int data : cols) {
                System.out.println(data);
            }
        }
    }
}

‣ 3차원 배열

public class ArrayEx11 {
    public static void main(String[] args) {
        // 3차원 배열
        int[][][] arr1 = new int[3][2][3];
        int[][][] arr2 = {
            {
                {1, 2, 3},
                {10, 20, 30}
            },
            {
                {4, 5, 6},
                {40, 50, 60}
            },
            {
                {7, 8, 9},
                {40, 50, 60}
            }
        };
        
        System.out.println(arr2[0][0][0]);
        System.out.println(arr2[1][1][1]);

        // 기존 for문을 이용해서 전체 데이터 출력
        for (int i = 0; i < arr2.length; i++) {
            for (int j = 0; j < arr2[i].length; j++) {
                for (int k = 0; k < arr2[i][j].length; k++) {
                    System.out.println(arr2[i][j][k]);
                }
            }
        }
    }
}

‣ 가변 배열

2차원 이상의 다차원 배열에서는 내부 배열의 길이가 서로 달라도 된다.

각 내부 배열은 서로 다른 길이를 가질 수 있으며, 배열의 "행"은 동일하지만, 각 행의 "열"은 다르게 지정할 수 있다. 이는 2차원 배열에서 열의 개수를 자유롭게 설정할 수 있다는 뜻이다.

즉, 행만 선언하고 열의 개수를 나중에 임의로 지정할 수 있는 구조로, 배열의 각 행이 서로 다른 크기를 가질 수 있는 유연한 형태이다.

public class ArrayEx12 {
    public static void main(String[] args) {
        // 가변 배열
        int[][] arr1 = new int[3][];
        arr1[0] = new int[3];
        arr1[1] = new int[2];
        arr1[2] = new int[1];

        arr1[0][0] = 10;
        arr1[2][0] = 20;

        System.out.println(arr1[0][0]);
        System.out.println(arr1[2][0]);
        
        int[][] arr2 = {{10, 20, 30}, {40, 50}, {60}};
        System.out.println(arr2[0][0]);
        System.out.println(arr2[2][0]);
    }
}

0개의 댓글

관련 채용 정보