토마토바구니
576
2020-09-02 20:48:16 작성 2020-09-02 20:51:42 수정됨
0
1297

(Java)왕초보를 위한 2차원 배열


아주아주 왕초보를 위한 자바 2차원 배열 설명입니다. 사실 자바를 모르고 다른 언어만 아셔도 상관 없습니다. 

https://yeon-kr.tistory.com/132





1. 2차원 배열

int[] array = new int[2]; 

위에서 보는 코드는 그냥 배열입니다. 2개의 값이 들어갈 수 있는 평범한 배열을 만들었는데요. 

 

int[][] array2 = new int[2][3]; 

위의 코드를 봅니다. 뭔가 이상합니다. 괄호가 하나가 더 생겼습니다. 대체 어떻게 된 일일까요?

 

 

 

위의 그림을 봅니다. 총 6개의 값을 넣을 수 있는 공간이 생겼습니다. 

 

2차원 배열입니다. 배열의 배열입니다. 즉 배열이 합쳐져서, 다시 배열을 이루는 것입니다. 정확히는  int 정수 3개를 넣을 수 있는,배열 2개를 만드는 것 입니다. 즉 가로 1 = 배열 1개라고 생각하시면 됩니다. 

 

좀 더 쉽게 생각을 해보자면, 엑셀처럼 순서대로 [2][3]을 가로축, 세로축이라고 생각하시면 됩니다. 가로(row) 2줄, 세로(column) 3줄이라고 생각하면, 머릿속에 그림을 그리기 좀 더 쉽습니다. 

 

 

2. 코드

public class Demo {
    public static void main(String[] args) {

        //Create 2 arrays, 3 values each
        int[][] arr = new int[2][3];

        int k = 10;

        //Roof dimensional array
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[i].length; j++) {
                arr[i][j] = k;
                k += 10;

                System.out.print(arr[i][j] + " ");
            }
            System.out.println();
        }
    }
}


 

위의 그림에서 본 것과 같은 int 정수 3개를 넣을 수 있는, 배열 2개를 만들어 보겠습니다. 즉 가로축 2줄, 세로축 3줄입니다. 

 

그리고 이 배열을 for문을 통해서 하나하나 꺼내보겠습니다. 여기서 많은 분들이 헷갈려합니다. 쉽습니다.

 

첫 번째 for문에서 말하는 arr.length의 길이는 몇일까요? 앞서 2차원 배열은 정수 3개의 값을 가지는, 2개의 배열이라고 말했습니다. 즉 길이는 2입니다. i는 0 ~ 1까지의 값을 가지게 됩니다.

 

첫 번째 for문이 0인 상태에서, 두 번째 for문으로 넘어옵니다. arr[i].length는 몇일까요? 이때는 3입니다. 이는 arr[0].length와 같습니다. 즉 첫 번째 배열(가로축)의 길이를 묻는 질문입니다. int 정수 3개의 값을 가지므로 길이는 3이 됩니다. j에는 0 ~ 2까지의 값이 올 수 있습니다. 

 

arr[i][j]는 arr[0][0]이 가장 먼저 오게 됩니다. 즉 첫 번째 배열의, 첫 번째 값입니다. 위의 그림을 참고하면 더 쉽습니다. k값은 10이었으므로, 10이 들어가게 됩니다. 

 

두 번째 for문에서 arr[0][0] ~ arr[0][2]까지 열심히 돌면, 첫 번째 배열이 완성되고, 첫 번째 for문으로 가서 두 번째 배열(가로축)을 만들게 됩니다. 

 

혹시나 헷갈리시는 분들은 아래와 같이 print를 계속 찍어봐도 됩니다. 좀 더 알기 쉽습니다. 

public class Demo {
    public static void main(String[] args) {

        //Create 2 rows, 3 columns
        int[][] arr = new int[2][3];
        System.out.println("Array's length --> " + arr.length);

        int k = 10;

        //roof dimensional array
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[i].length; j++) {
                System.out.println("Each array's length -->" + arr[i].length);
                arr[i][j] = k;
                k += 10;

                System.out.println(arr[i][j] + " ");
            }
            System.out.println();
        }
    }
}


 

 

 

3. 결괏값

 

 

 

코드 작성 결괏값을 보면, 위에서 봤던 그림과 같은 형태를 볼 수 있습니다. 

 

2차원 배열은 정말 쉽지만, 코드를 작성하다 보면 머릿속에서 복잡함을 느끼기 쉽습니다. 그럴 때마다 위의 그림을 생각하면서, 엑셀을 작성한다고 생각하시면 좀 더 쉽습니다.

 

 

4. 출처

tcpschool.com/java/java_array_twoDimensional

programmers.co.kr/learn/courses/5/lessons/135

1
  • 댓글 0

  • 로그인을 하시면 댓글 을 등록할 수 있습니다.