-
[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. 출처
반응형'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