ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java]2차원 배열이란?
    Java & Kotlin 2020. 9. 2. 20:39
    반응형

    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

    반응형

    'Java & Kotlin' 카테고리의 다른 글

    (Java)Scanner vs BufferedReader  (0) 2021.02.04
    (Java)Math.max vs 삼항연산자  (0) 2021.01.30
    Firefox Java Coding Style  (0) 2020.06.13
    [Java]초기화란?  (330) 2020.05.30
    (JAVA)hasNext() vs next() 메서드 차이점?  (0) 2020.05.18

    댓글

Designed by Tistory.