Java 2차원 배열 2-dimensional array vs JS(자바스크립트) multi dimensional array

습토리·2025년 2월 25일
0

Java

목록 보기
22/32

자바(Java) vs 자바스크립트(JavaScript) 2차원 배열 비교

프로그래밍을 공부하면서 자바와 자바스크립트의 차이를 느낄 때가 많다. 최근에는 자바의 2차원 배열을 공부하면서 자바스크립트와 비교했을 때 "왜 이렇게 복잡하지?"라는 생각이 들었다. 이번 글에서는 내가 헷갈렸던 부분을 정리해보고, 자바와 자바스크립트에서 2차원 배열을 어떻게 다루는지 비교해보겠다.

🔹 2차원 배열이란?

2차원 배열은 배열 안에 또 다른 배열이 있는 구조다. 흔히 행(row)과 열(column)으로 구성된 표 형태라고 생각하면 이해하기 쉽다.

✅ 자바에서의 2차원 배열

자바에서 2차원 배열을 선언하고 초기화하는 방법은 다음과 같다.

public class ArrayExample {
    public static void main(String[] args) {
        boolean[][] board = {
                {true, false},
                {false, true}
        };

        System.out.println(board.length);  // 2 (행 개수)
        System.out.println(board[0].length); // 2 (첫 번째 행의 열 개수)
    }
}

여기서 중요한 것은 board.lengthboard[i].length의 차이다.

  • board.length2차원 배열의 행 개수
  • board[i].length해당 행에 있는 열 개수

❗ 헷갈렸던 부분: 처음에는 board[0]을 출력했을 때 배열이 아니라 [Z@41629346 같은 이상한 값이 나와서 당황했다. 이는 board[0]이 배열(객체)이기 때문에 참조값이 출력된 것이었다. 따라서 배열의 내용을 보려면 Arrays.toString() 또는 Arrays.deepToString()을 사용해야 한다.

import java.util.Arrays;
System.out.println(Arrays.toString(board[0])); // [true, false]
System.out.println(Arrays.deepToString(board)); // [[true, false], [false, true]]

✅ 자바스크립트에서의 2차원 배열

자바스크립트에서는 2차원 배열을 더 간단하게 만들 수 있다.

let board = [
    [true, false],
    [false, true]
];

console.log(board.length);  // 2 (행 개수)
console.log(board[0].length); // 2 (첫 번째 행의 열 개수)

자바스크립트의 배열은 길이가 고정되지 않기 때문에, 행마다 열 개수가 달라도 문제없다.

let board = [
    [true, false, true], // 3개
    [false, true]        // 2개
];

console.log(board[0].length); // 3
console.log(board[1].length); // 2

반면, 자바에서는 배열의 크기가 고정되어 있어서 이렇게 하면 ArrayIndexOutOfBoundsException이 발생할 수도 있다.

🔹 2차원 배열을 반복문으로 탐색하기

✅ 자바에서의 이중 반복문

자바에서는 행(board.length)을 반복하는 바깥 루프와, 각 행의 열(board[i].length)을 반복하는 안쪽 루프를 사용한다.

for (int i = 0; i < board.length; i++) {
    for (int j = 0; j < board[i].length; j++) {
        System.out.print(board[i][j] + " ");
    }
    System.out.println();
}

💡 j < board[i].length가 중요한 이유

처음에는 j < board.length라고 쓸 뻔했다. 하지만 각 행마다 열 개수가 다를 수도 있기 때문에, 정확한 board[i].length를 기준으로 반복해야 한다.

✅ 자바스크립트에서의 반복문

자바스크립트에서는 for...of 문을 사용하면 더 직관적으로 2차원 배열을 탐색할 수 있다.

for (let row of board) { // 행 반복
    for (let cell of row) { // 열 반복
        console.log(cell);
    }
}

자바에서도 for-each 문(for (boolean[] row : board))을 쓰면 비슷한 효과를 낼 수 있지만, 기본적으로는 인덱스를 활용한 for 문을 더 많이 사용한다.

🔹 자바 vs 자바스크립트 비교 정리

자바(Java)자바스크립트(JavaScript)
배열 크기고정 (생성 시 크기 변경 불가)유동적 (길이 변경 가능)
2차원 배열 선언boolean[][] board = new boolean[2][2];let board = [[true, false], [false, true]];
배열 요소 출력System.out.println(Arrays.deepToString(board));console.log(board);
반복문for (int i = 0; i < board.length; i++)for (let row of board) {}
유연성행마다 열 개수가 다르면 오류 발생 가능자유롭게 가변 길이 가능

🔹 마무리

자바와 자바스크립트의 2차원 배열을 비교해보니, 자바스크립트가 더 유연하고 직관적으로 다룰 수 있다는 것을 알게 되었다. 특히 for...of 문을 활용하면 코드가 더 깔끔해지는 점이 인상적이었다. 반면, 자바는 배열의 크기가 고정되어 있어서 배열을 선언할 때 크기를 미리 정해야 한다는 점이 달랐다.

처음에는 자바에서 board.lengthboard[i].length의 차이를 이해하는 것이 어려웠지만, 자바는 행과 열 크기가 엄격하게 관리되는 구조라는 점을 기억하면 이해하기 쉬웠다.

이제는 자바에서도 2차원 배열을 조금 더 자연스럽게 사용할 수 있을 것 같다! 😊

profile
재미난 삶을 살다

1개의 댓글

comment-user-thumbnail
2025년 4월 22일

답글 달기