728x90
1. 목적
배열은 같은 타입의 여러 개의 데이터를 하나의 변수에 저장할 수 있는 자료구조다.
Java에서는 배열을 사용하여 데이터를 효율적으로 관리하고 반복적인 연산을 쉽게 수행할 수 있다.
배열을 사용하는 이유는 아래와 같다.
- 여러 개의 값을 하나의 변수에 저장 가능
- 반복문을 활용한 데이터 처리 가능
- 모든 배열 요소의 합을 구하거나 정렬하는 작업이 쉬워짐
- 고정된 크기의 연속적인 메모리 할당을 통해 빠른 데이터 접근 가능
- O(1) 시간 복잡도로 배열 요소 접근 가능 (arr[i] 사용)
2. 특징
- 고정된 크기 배열을 선언할 때 크기가 정해지며 변경 불가능
- 같은 타입의 요소 저장 배열에 저장되는 모든 값은 같은 데이터 타입이어야 함
- 인덱스를 통한 접근 배열의 요소는 0부터 시작하는 인덱스로 접근
- 연속된 메모리 공간 할당 배열은 연속된 메모리 블록을 차지하여 빠른 접근 속도를 가짐
배열의 메모리 구조
배열은 연속된 메모리 공간을 차지한다.
예를 들어, int[] arr = {10, 20, 30}; 이라면, 메모리 구조는 다음과 같다:
Index: 0 1 2
Value: 10 20 30
arr[0] → 10, arr[1] → 20, arr[2] → 30 에 접근 가능
3. 사용 예시
1. 배열 선언 및 생성
배열 선언
// 정수 배열 선언
int[] numbers;
// 선언과 동시에 생성
int[] numbers = new int[5]; // 크기가 5인 배열 생성
배열 초기화
// 정수 배열 초기화
int[] numbers = {1, 2, 3, 4, 5};
2. 배열 요소 접근 및 변경
int[] numbers = {10, 20, 30};
// 배열 요소 접근
System.out.println(numbers[0]); // 출력: 10
// 배열 요소 변경
numbers[1] = 50;
System.out.println(numbers[1]); // 출력: 50
- arr[index] 를 사용하여 요소를 읽거나 수정 가능
- 인덱스는 0부터 시작! (arr[0]이 첫 번째 요소)
3. 배열과 반복문
for 문을 이용한 배열 순회
int[] numbers = {10, 20, 30, 40, 50};
for (int i = 0; i < numbers.length; i++) {
System.out.println(numbers[i]);
}
향상된 for 문 (for-each)
for (int num : numbers) {
System.out.println(num);
}
- for-each 문은 요소를 직접 접근하지만, 인덱스를 사용할 수 없음
- 요소를 수정해야 한다면 일반 for 문을 사용해야 함
4. 다차원 배열 (2차원 배열)
2차원 배열 선언 및 초기화
int[][] matrix = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
2차원 배열 요소 접근
System.out.println(matrix[0][1]); // 출력: 2
2차원 배열 반복문
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[i].length; j++) {
System.out.print(matrix[i][j] + " ");
}
System.out.println();
}
- 배열이 n x m 형태로 저장됨
- 중첩 for 문을 사용하여 2차원 배열을 쉽게 순회 가능
4. 배열 관련 주요 API (java.util.Arrays)
Java에서는 java.util.Arrays 클래스를 사용하여 배열을 쉽게 다룰 수 있다.
1. Arrays.toString()
: 배열 출력
import java.util.Arrays;
int[] arr = {1, 2, 3, 4, 5};
System.out.println(Arrays.toString(arr)); // [1, 2, 3, 4, 5]
2. Arrays.sort()
: 배열 정렬
int[] numbers = {5, 2, 8, 1, 3};
Arrays.sort(numbers);
System.out.println(Arrays.toString(numbers)); // [1, 2, 3, 5, 8]
3. Arrays.fill()
: 배열 값 채우기
int[] arr = new int[5];
Arrays.fill(arr, 7);
System.out.println(Arrays.toString(arr)); // [7, 7, 7, 7, 7]
4. Arrays.copyOf()
: 배열 복사
int[] original = {1, 2, 3};
int[] copy = Arrays.copyOf(original, 5);
System.out.println(Arrays.toString(copy)); // [1, 2, 3, 0, 0]
5. Arrays.equals()
: 배열 비교
int[] a = {1, 2, 3};
int[] b = {1, 2, 3};
System.out.println(Arrays.equals(a, b)); // true
6. Arrays.binarySearch()
→ 이진 탐색
int[] numbers = {1, 3, 5, 7, 9};
int index = Arrays.binarySearch(numbers, 5);
System.out.println(index); // 2
- 배열이 정렬된 상태여야
binarySearch()
가 정상적으로 동작함!
728x90
'자바' 카테고리의 다른 글
[JAVA] 상속 (0) | 2025.03.12 |
---|---|
[JAVA] Stream (0) | 2025.03.11 |
[JAVA] record (0) | 2025.03.11 |
[JAVA] 오버로딩, 오버라이딩 (0) | 2025.03.06 |
[JAVA] Getter, Setter (0) | 2025.03.06 |