반응형
1. 정적 배열 (Static Array)
- 크기가 고정된 배열을 선언할 때 사용
- 한 번 크기를 설정하면 변경 불가능
- new 키워드를 사용하여 배열을 생성
(1) 배열 선언 & 초기화
// 1️⃣ 선언 후 값 할당
int[] arr = new int[5]; // 길이가 5인 배열 생성 (기본값 0)
// 2️⃣ 선언과 동시에 초기화
int[] arr2 = {1, 2, 3, 4, 5};
// 3️⃣ new 키워드를 사용한 초기화
int[] arr3 = new int[]{10, 20, 30, 40, 50};
// 4️⃣ 다른 자료형 배열
String[] names = {"Alice", "Bob", "Charlie"};
double[] decimals = {1.1, 2.2, 3.3};
- 배열은 한 번 생성하면 크기 변경 불가능
- new int[5] → 길이가 5인 배열을 생성하면 기본값 0으로 초기화됨
(2) 배열 값 접근 & 수정
int[] arr = {10, 20, 30, 40, 50};
// 배열 요소 접근
System.out.println(arr[0]); // 10
System.out.println(arr[2]); // 30
// 배열 값 변경
arr[1] = 100;
System.out.println(arr[1]); // 100
- 배열의 인덱스는 0부터 시작!
- 배열 요소를 arr[index]로 접근하여 값 읽기/수정 가능
- arr.length : 배열 길이 알 수 있음
- 2차원일 경우 arr[0].length 까지 사용하면 행과 열의 길이를 각각 구할 수 있음
2. 동적 배열 (Dynamic Array)
- 크기가 자동으로 조정되는 배열
- ArrayList를 사용하여 크기를 변경 가능
- add()를 사용하여 동적으로 요소 추가 가능
(1) ArrayList 사용
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>(); // 동적 배열 생성
// 요소 추가
list.add(10);
list.add(20);
list.add(30);
System.out.println(list); // [10, 20, 30]
// 요소 수정
list.set(1, 100);
System.out.println(list); // [10, 100, 30]
// 요소 삭제
list.remove(0);
System.out.println(list); // [100, 30]
// 크기 확인
System.out.println(list.size()); // 2
}
}
ArrayList는 자동으로 크기 조정 가능
.add() → 요소 추가
.set(index, value) → 요소 변경
.remove(index) → 요소 삭제
.size() → 현재 크기 확인
3. 정적 배열과 동적 배열 비교
| 비교 항목 | 정적 배열 (int[]) | 동적 배열 (ArrayList) |
| 크기 변경 | 불가능 (고정됨) | 가능 (자동 조정) |
| 초기화 방법 | new int[5], {1,2,3} | new ArrayList<>() |
| 요소 추가 | 불가능 (arr[n] = 값 직접 할당) | .add() 사용 가능 |
| 요소 삭제 | 불가능 | .remove(index) 사용 가능 |
| 성능 | 빠름 (고정 크기) | 삽입/삭제 시 성능 저하 가능 |
| 언제 사용? | 배열 크기가 변하지 않을 때 | 배열 크기가 유동적일 때 |
하지만 코딩테스트 풀면서 아직까지는 대부분 정적 배열을 사용해서 구현 했었음!
주어진 크기에 맞게 int [] arr = new int [n] 이런식으로 구현 했던 적이 많아서 2차원 배열 생성 및 배열을 받아왔을 때 행과 열 길이를 알고 활용할 줄 알면 좋다고 생각함!
반응형
'코테' 카테고리의 다른 글
| (코테) [Java] Heap (1) | 2025.05.15 |
|---|---|
| (코테) [Java] Deque (0) | 2025.05.15 |
| (코테) [Java] Queue (0) | 2025.05.15 |
| (코테) [Java] Stack (0) | 2025.05.15 |
| (코테) [Java] 형변환 (0) | 2025.05.13 |