프로그래밍 언어/Java

자바 배열과 ArrayList — 데이터를 묶어서 관리하기(Java 기초)

테크위키 2026. 3. 21. 20:00
반응형

배열과 ArrayList — 데이터를 묶어서 관리하기

변수 하나엔 값 하나만 들어가요. 그런데 100명의 학생 점수를 저장하려면?
변수 100개를 만드는 건 말이 안 되죠. 이럴 때 배열ArrayList 를 써요! 📦


📌 이 글에서 다룰 내용

  1. 배열(Array) — 고정 크기의 데이터 묶음
  2. 배열 다루기
  3. 향상된 for 문 (for-each)
  4. ArrayList — 크기가 변하는 데이터 묶음
  5. 실습 — 학생 성적 관리하기

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) 를 배워요.
코드를 재사용 가능한 블록으로 만드는 방법을 알아봐요!


이 글이 도움이 됐다면 다음 편도 같이 읽어봐요 😊 질문이 있으면 언제든지 댓글로 남겨주세요!