
프로그래밍에서 같은 종류의 데이터를 여러 개 다뤄야 할 때, 변수를 하나하나 선언하는 방식은 한계가 있다.
예를 들어 학생 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 false 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차원 배열은 행(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-each문)이 편리하다.
int[] scores = {90, 80, 70, 60, 50};
for (int score : scores) {
System.out.println(score);
}
예시:
int a = 10; // 기본형 → 값 10이 저장됨
int[] arr = new int[3]; // 참조형 → 배열의 참조값(주소)이 저장됨
참조형을 사용하면 배열 크기를 동적으로 바꿀 수 있고, 복잡한 데이터 구조를 다룰 수 있다.