반응형
배열과 ArrayList — 데이터를 묶어서 관리하기
변수 하나엔 값 하나만 들어가요. 그런데 100명의 학생 점수를 저장하려면?
변수 100개를 만드는 건 말이 안 되죠. 이럴 때 배열과 ArrayList 를 써요! 📦
📌 이 글에서 다룰 내용
- 배열(Array) — 고정 크기의 데이터 묶음
- 배열 다루기
- 향상된 for 문 (for-each)
- ArrayList — 크기가 변하는 데이터 묶음
- 실습 — 학생 성적 관리하기
1. 배열 — 고정 크기의 데이터 묶음
배열은 같은 자료형의 값을 순서대로 저장해요.
크기는 처음 만들 때 정해지고, 나중에 변경할 수 없어요.
// 선언과 초기화를 한 번에
int[] scores = {90, 85, 92, 78, 88};
// 크기만 정해두고 나중에 값 넣기
String[] names = new String[3];
names[0] = "홍길동";
names[1] = "김철수";
names[2] = "이영희";
인덱스로 값을 꺼내요. (0부터 시작!)
System.out.println(scores[0]); // 90
System.out.println(scores[4]); // 88
System.out.println(scores.length); // 배열 길이: 5
⚠️ 범위를 벗어나면 오류!
길이가 5인 배열에서scores[5]에 접근하면ArrayIndexOutOfBoundsException이 발생해요.
2. 배열 다루기
for 문으로 순회하기
int[] scores = {90, 85, 92, 78, 88};
for (int i = 0; i < scores.length; i++) {
System.out.println((i + 1) + "번 학생: " + scores[i] + "점");
}
배열 정렬하기
import java.util.Arrays;
int[] numbers = {5, 3, 8, 1, 9, 2};
Arrays.sort(numbers);
System.out.println(Arrays.toString(numbers));
// [1, 2, 3, 5, 8, 9]
3. 향상된 for 문 (for-each)
배열의 모든 요소를 순서대로 꺼낼 때 더 간결하게 쓸 수 있어요.
String[] fruits = {"사과", "바나나", "딸기"};
for (String fruit : fruits) {
System.out.println(fruit);
}
사과
바나나
딸기
💡 인덱스가 필요 없을 때는 for-each 가 훨씬 읽기 편해요!
4. ArrayList — 크기가 변하는 데이터 묶음
배열은 크기를 바꿀 수 없어요. ArrayList 는 요소를 자유롭게 추가하고 삭제할 수 있어요.
import java.util.ArrayList;
ArrayList<String> fruits = new ArrayList<>();
// 추가
fruits.add("사과");
fruits.add("바나나");
fruits.add("딸기");
System.out.println(fruits); // [사과, 바나나, 딸기]
System.out.println(fruits.size()); // 3
System.out.println(fruits.get(0)); // 사과
수정, 삭제
fruits.set(1, "포도"); // 1번 인덱스를 포도로 수정
fruits.remove("딸기"); // 값으로 삭제
fruits.remove(0); // 인덱스로 삭제
System.out.println(fruits); // [포도]
for-each로 순회하기
ArrayList<String> fruits = new ArrayList<>();
fruits.add("사과");
fruits.add("바나나");
fruits.add("딸기");
for (String fruit : fruits) {
System.out.println(fruit);
}
배열 vs ArrayList 비교
| 구분 | 배열 | ArrayList |
|---|---|---|
| 크기 | 고정 | 가변 |
| 자료형 | 기본형 가능 | 참조형만 가능 |
| 접근 | arr[i] |
.get(i) |
| 추가 | 불가 | .add() |
| 삭제 | 불가 | .remove() |
5. 실습 — 학생 성적 관리하기
ScoreManager.java 파일을 만들고 아래 코드를 작성해요.
import java.util.ArrayList;
public class ScoreManager {
public static void main(String[] args) {
ArrayList<Integer> scores = new ArrayList<>();
scores.add(90);
scores.add(85);
scores.add(92);
scores.add(78);
scores.add(88);
int total = 0;
int max = scores.get(0);
int min = scores.get(0);
for (int score : scores) {
total += score;
if (score > max) max = score;
if (score < min) min = score;
}
double average = (double) total / scores.size();
System.out.println("=== 성적 통계 ===");
System.out.println("학생 수: " + scores.size() + "명");
System.out.println("총 점수: " + total + "점");
System.out.printf("평균 점수: %.1f점%n", average);
System.out.println("최고 점수: " + max + "점");
System.out.println("최저 점수: " + min + "점");
}
}
=== 성적 통계 ===
학생 수: 5명
총 점수: 433점
평균 점수: 86.6점
최고 점수: 92점
최저 점수: 78점
오늘 배운 것 정리
- ✅ 배열은 고정 크기이고, 인덱스로 접근해요.
- ✅
Arrays.sort()로 배열을 정렬할 수 있어요. - ✅
for-each로 배열과 ArrayList를 간결하게 순회해요. - ✅ ArrayList는 크기가 자유롭고
.add(),.remove()로 요소를 관리해요.
🎯 다음 편 예고
8편에서는 메서드(Method) 를 배워요.
코드를 재사용 가능한 블록으로 만드는 방법을 알아봐요!
이 글이 도움이 됐다면 다음 편도 같이 읽어봐요 😊 질문이 있으면 언제든지 댓글로 남겨주세요!
'프로그래밍 언어 > Java' 카테고리의 다른 글
| 자바 클래스 Class와 객체 인스턴스 instance — 객체 지향 프로그래밍 첫걸음(Java 기초) (0) | 2026.03.22 |
|---|---|
| 자바 메서드 함수 — 코드를 재사용 가능한 블록으로 만들기(Java 기초) (0) | 2026.03.21 |
| 자바 반복문 for문 — for와 while로 반복 작업 처리하기(Java 기초) (0) | 2026.03.20 |
| 조건문 if문 — if와 switch로 상황에 맞게 분기하기(Java 기초) (0) | 2026.03.20 |
| 자바 연산자와 문자열 — 계산하고 텍스트 다루기(Java 기초) (1) | 2026.03.19 |