[JAVA] 05 배열(Array)
배열은 같은 타입의 값을 여러 개 저장할 수 있는 자료구조다. 반복문과 함께 자주 사용되며, 여러 데이터를 효율적으로 관리하기 위한 기본 개념이다.
1. 배열이란
배열(Array)은 같은 자료형의 데이터를 연속된 메모리 공간에 저장하는 구조다. 각 데이터는 인덱스(index)를 통해 접근한다.
- 배열의 인덱스는 0부터 시작한다.
- 배열의 크기는 생성 시 고정된다.
- 배열은 참조형이다.
2. 배열 선언
int[] arr;
배열 변수는 참조형이며, 이 시점에는 아직 실제 배열 객체가 생성되지 않았다.
3. 배열 생성
int[] arr = new int[5];
크기가 5인 int 배열이 Heap 영역에 생성된다. 각 요소는 기본값으로 초기화된다.
- int → 0
- double → 0.0
- boolean → false
- 참조형 → null
System.out.println(arr[0]);
OUTPUT
0
4. 배열 초기화
int[] arr = {10, 20, 30};
중괄호를 사용하면 선언과 동시에 초기화할 수 있다. 배열의 크기는 자동으로 3이 된다.
5. 배열 요소 접근
int[] arr = {10, 20, 30};
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
OUTPUT
10
20
30
잘못된 인덱스 접근 시 ArrayIndexOutOfBoundsException이 발생한다.
6. 배열 길이
int[] arr = new int[5];
System.out.println(arr.length);
OUTPUT
5
length는 필드다. 메서드가 아니므로 괄호를 사용하지 않는다.
7. 배열과 반복문
for 문
int[] arr = {1, 2, 3, 4, 5};
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
OUTPUT
1
2
3
4
5
향상된 for 문 (for-each)
int[] arr = {1, 2, 3};
for (int n : arr) {
System.out.println(n);
}
인덱스가 필요 없을 때 간결하게 사용한다. 단, 요소 수정은 어렵다.
8. 배열은 참조형이다
int[] a = {1, 2, 3};
int[] b = a;
b[0] = 100;
System.out.println(a[0]);
OUTPUT
100
a와 b는 같은 배열 객체를 참조한다. 이를 얕은 복사(참조 복사)라고 한다.
9. 배열 복사
값 복사 (깊은 복사)
int[] a = {1, 2, 3};
int[] b = new int[a.length];
for (int i = 0; i < a.length; i++) {
b[i] = a[i];
}
새로운 배열을 생성하고 값을 복사한다.
System.arraycopy
System.arraycopy(a, 0, b, 0, a.length);
Arrays.copyOf
import java.util.Arrays;
int[] c = Arrays.copyOf(a, a.length);
Arrays.copyOf는 가장 간결한 복사 방법이다.
10. 2차원 배열
int[][] arr = {
{1, 2, 3},
{4, 5, 6}
};
2차원 배열 순회
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
System.out.println(arr[i][j]);
}
}
2차원 배열은 배열 안에 배열이 들어있는 구조다. 행마다 길이가 다를 수도 있다 (가변 배열).
11. 배열과 메모리 구조
배열 객체는 Heap 영역에 생성된다. 배열 변수는 Stack 영역에 생성되며, Heap의 배열 주소를 참조한다.
따라서 배열을 다른 변수에 대입하면 주소만 복사된다.
12. 배열 사용 시 주의점
- 배열 크기는 변경할 수 없다.
- 인덱스 범위를 벗어나면 예외가 발생한다.
- 배열은 참조형이므로 복사 방식에 주의해야 한다.
- 크기 변경이 필요하면 ArrayList를 사용한다.
정리
- 배열은 같은 타입의 데이터를 저장하는 구조다.
- 인덱스는 0부터 시작한다.
- 배열은 참조형이다.
- 깊은 복사와 얕은 복사를 구분해야 한다.
- 반복문과 함께 자주 사용된다.
'Computer Science > Java' 카테고리의 다른 글
| [JAVA] 07 클래스와 객체 (0) | 2026.02.15 |
|---|---|
| [JAVA] 06 메서드(Method) (0) | 2026.02.15 |
| [JAVA] 04 반복문 for / while (0) | 2026.02.15 |
| [JAVA] 03 조건문 if / switch (0) | 2026.02.15 |
| [JAVA] DI(의존성 주입)란 무엇인가? (0) | 2026.02.15 |