Java - 배열

develkkm·2025년 9월 9일

0부터 시작하는 Java

목록 보기
8/27

배열(Array)


배열이 필요한 이유

프로그래밍에서 같은 종류의 데이터를 여러 개 다뤄야 할 때, 변수를 하나하나 선언하는 방식은 한계가 있다.
예를 들어 학생 5명의 점수를 저장한다고 해보자.

int student1 = 90;
int student2 = 80;
int student3 = 70;
int student4 = 60;
int student5 = 50;

학생 수가 늘어나면 변수도 계속 늘려야 하고, 반복문을 쓰기도 어렵다.
이 문제를 해결하기 위해 배열(Array)을 사용한다.


배열의 선언과 생성

배열은 같은 타입의 데이터를 하나로 묶어서 관리할 수 있게 해준다.

int[] scores;           // 배열 변수 선언
scores = new int[5];    // 배열 생성
  • int[] scores : int 배열을 담을 수 있는 변수 선언
  • new int[5] : int형 공간 5개를 만든다.

이렇게 선언하면 메모리에 5개의 int 공간이 연속적으로 만들어지고, 배열 변수에는 그 주소(참조값)가 저장된다.


배열의 초기화

Java는 배열을 생성하면 내부를 기본값으로 자동 초기화한다.

  • 숫자 타입 → 0
  • boolean → false
  • 참조형(String 등) → null

예시:

int[] scores = new int[5];
System.out.println(scores[0]); // 0

원하는 값으로 직접 초기화할 수도 있다.

int[] scores = {90, 80, 70, 60, 50};

배열 사용법

배열의 각 요소에는 인덱스(index)로 접근한다.
인덱스는 0부터 시작한다.

int[] scores = {90, 80, 70, 60, 50};

System.out.println(scores[0]); // 90
System.out.println(scores[4]); // 50

만약 인덱스 범위를 벗어나면 오류가 발생한다.

System.out.println(scores[5]); // 오류: ArrayIndexOutOfBoundsException

반복문과 배열

배열은 보통 반복문과 함께 사용한다.

int[] scores = {90, 80, 70, 60, 50};

for (int i = 0; i < scores.length; i++) {
    System.out.println("학생" + (i+1) + " 점수: " + scores[i]);
}
  • scores.length는 배열의 길이를 반환한다.
  • 길이가 바뀌어도 반복문 코드는 그대로 쓸 수 있다.

2차원 배열

2차원 배열은 행(Row)과 열(Column) 구조를 가진 배열이다.

int[][] matrix = {
    {1, 2, 3},
    {4, 5, 6}
};

접근할 때는 [행][열] 형태를 사용한다.

System.out.println(matrix[0][1]); // 2
System.out.println(matrix[1][2]); // 6

2중 for문을 사용하면 행과 열을 순회할 수 있다.

for (int row = 0; row < matrix.length; row++) {
    for (int col = 0; col < matrix[row].length; col++) {
        System.out.print(matrix[row][col] + " ");
    }
    System.out.println();
}

향상된 for문

배열의 모든 요소를 순서대로 탐색할 때는 향상된 for문(for-each문)이 편리하다.

int[] scores = {90, 80, 70, 60, 50};

for (int score : scores) {
    System.out.println(score);
}
  • 단순히 요소를 순회할 때는 편리하다.
  • 하지만 인덱스 값이 필요할 때는 일반 for문을 사용해야 한다.

기본형 vs 참조형

  • 기본형(Primitive Type) : int, long, double, boolean 등. 변수 안에 값 자체가 들어간다.
  • 참조형(Reference Type) : 배열, 객체 등. 변수 안에 값이 아니라 메모리 주소(참조값)가 들어간다.

예시:

int a = 10;                  // 기본형 → 값 10이 저장됨
int[] arr = new int[3];      // 참조형 → 배열의 참조값(주소)이 저장됨

참조형을 사용하면 배열 크기를 동적으로 바꿀 수 있고, 복잡한 데이터 구조를 다룰 수 있다.

profile
알던것을 더 확실하게

0개의 댓글