JAVA (4) - 배열
JAVA (4) - 배열
1. 개요
배열(Array)은 같은 타입의 변수를 여러 개 묶어서 하나의 단위로 관리하는 자료구조다. 데이터의 수가 많아질 때 변수를 일일이 선언하는 대신 하나의 배열 변수를 통해 연속된 메모리 공간에 데이터를 저장하고 효율적으로 관리할 수 있다.
Java에서 int 자체는 기본 타입(Primitive Type)이지만, 이를 묶은 배열(int[])은 참조 타입(Reference Type)에 속하며 힙(Heap) 메모리 영역에 생성되는 객체다.
2. 배열의 선언과 생성
Java에서 배열을 사용하려면 변수를 선언하고, new 연산자를 이용해 메모리를 할당받아야 한다.
2.1 배열 선언
1
2
3
int[] score; // 가장 일반적으로 사용되는 방식
int score2[]; // C언어 스타일 (Java에서도 허용)
2.2 배열 생성 및 초기화
배열은 생성 시 각 요소가 타입별 기본값(int는 0, boolean은 false, 참조 타입은 null)으로 자동 초기화된다.
1
2
3
4
5
6
7
8
9
10
11
// 1. 크기 지정 후 생성 (기본값 0으로 초기화)
int[] numbers = new int[5];
// 2. 값 대입
numbers[0] = 10;
numbers[1] = 20;
// 3. 선언과 동시에 값으로 초기화 (가장 많이 사용)
int[] scores = { 90, 85, 95, 70, 100 };
int[] ages = new int[]{ 20, 25, 30 };
3. 배열 요소 접근과 length
3.1 인덱스(Index)
배열의 각 요소는 0부터 시작하는 인덱스를 통해 접근한다.
- 첫 번째 요소:
array[0] - 마지막 요소:
array[array.length - 1]
주의: 배열의 범위를 벗어난 인덱스에 접근하려 하면
ArrayIndexOutOfBoundsException예외가 발생한다.
3.2 배열 길이 (length)
length 필드를 사용하면 배열의 크기(요소 개수)를 가져올 수 있다. 이는 for 문 등 반복문 처리 시 유용하다.
1
2
3
4
5
6
7
8
9
10
11
12
int[] numbers = {10, 20, 30, 40, 50};
// 일반 for 문 사용
for (int i = 0; i < numbers.length; i++) {
System.out.println("numbers[" + i + "] = " + numbers[i]);
}
// 향상된 for 문 (Enhanced for) 사용
for (int num : numbers) {
System.out.println(num);
}
4. 2차원 배열 (Multi-Dimensional Array)
행과 열로 구성된 매트릭스 형태로 데이터를 관리할 때 2차원 배열을 사용한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// 2행 3열 2차원 배열 선언
int[][] matrix = new int[2][3];
// 2차원 배열 값 지정 초기화
int[][] arr = {
{ 1, 2, 3 },
{ 4, 5, 6 }
};
// 중첩 for 문을 이용한 탐색
for (int i = 0; i < arr.length; i++) { // 행 반복
for (int j = 0; j < arr[i].length; j++) { // 열 반복
System.out.print(arr[i][j] + " ");
}
System.out.println();
}
5. 배열의 복사
Java에서 배열은 생성 후 크기를 변경할 수 없다. 더 큰 크기의 배열이 필요할 때는 기존 배열의 요소를 새로운 배열로 복사해야 한다.
5.1 System.arraycopy()
가장 효율적인 방식의 배열 복사 메서드다.
1
2
3
4
5
6
7
int[] oldArray = { 1, 2, 3 };
int[] newArray = new int[5];
// System.arraycopy(원본, 원본시작위치, 대상, 대상시작위치, 복사개수)
System.arraycopy(oldArray, 0, newArray, 0, oldArray.length);
// newArray 결과: [1, 2, 3, 0, 0]
5.2 Arrays.copyOf()
java.util.Arrays 클래스에서 제공하며 지정한 길이만큼 복사된 새 배열을 반환한다.
1
2
3
4
5
6
import java.util.Arrays;
int[] oldArray = { 1, 2, 3 };
int[] newArray = Arrays.copyOf(oldArray, 5);
// newArray 결과: [1, 2, 3, 0, 0]
6. 정리
- 배열은 동일한 타입의 연관 데이터를 효율적으로 저장하고 취급하는 연속적 메모리 공간이다.
- 인덱스는
0부터 시작하며, 배열의 길이는.length로 확인할 수 있다. - 배열은 크기를 가변적으로 바꿀 수 없으므로, 데이터 변경이 잦거나 가변적인 크기가 필요할 때에는
ArrayList등의 컬렉션 프레임워크를 활용해야 한다.
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.