[Java] 배열

이연수·2025년 5월 21일

Java

목록 보기
5/10

1. 배열이란?

같은 타입의 데이터를 연속된 공간에 저장하는 자료구조

냉장고로 비유해보자면,

- 변수 : 물건 하나만 올려두는 선반

- 배열 : 칸이 나눠진 냉장고 (칸마다 같은 종류 보관)

즉, 같은 타입의 값 여러 개를 하나의 이름으로 묶어서 관리하는 구조

⭐ 핵심 키워드 3개 ⭐

- 순서 O

- 연속된 공간에 저장 (Memory에 일렬로 저장)

- 인덱스로 접근 (0부터 번호가 매겨짐)

값들에 빠르게 접근하고 싶을 때 사용


배열 선언 방법

자료형[] 배열이름 = new 자료형[크기];
자료형[] : 배열에 들어갈 값의 타입

배열이름 : 배열을 식별할 수 있는 이름

new 자료형[크기] : 실제 메모리 공간 할당 (크기는 정수값)

선언 방식은 2가지
// 방법 1 : 선언과 동시에 값 초기화
int[] numbers = {1, 2, 3, 4, 5};

// 방법 2 : 크기만 지정 후 나중에 값 넣기
int[] numbers = new int[5];
numbers[0] = 1;
numbers[1] = 2;

배열 구조 이해하기

numbers = {1, 2, 3, 4, 5}

인덱스 : [0] [1] [2] [3] [4]
값     :  1   2   3   4   5
- 인덱스는 0부터 시작

- 마지막 인덱스는 배열 크기 - 1

- numbers.length → 배열 전체 크기 반환

2. 기본 예제

대표 예제 1 : 기본 배열 선언, 초기화, 출력하기

public class ArrayExample1 {
    public static void main(String[] args) {
        // 정수형 배열 선언과 초기화
        int[] numbers = {1, 2, 3, 4, 5};

        // 배열 요소 출력
        for (int i = 0; i < numbers.length; i++) {
            System.out.println("numbers[" + i + "] = " + numbers[i]);
        }
    }
}

코드 설명 :

- int[] numbers = {1, 2, 3, 4, 5}; → 배열 선언과 동시에 값들 넣어서 초기화

- numbers.length로 배열 크기 확인하며 반복문으로 순회

- numbers[i]로 각 인덱스 요소 접근해 출력

- 인덱스 범위 벗어나면 ArrayIndexOutOfBoundsException 발생

출력 결과 :

numbers[0] = 1
numbers[1] = 2
numbers[2] = 3
numbers[3] = 4
numbers[4] = 5

대표 예제 2 : 배열 요소 합계 구하기

public class ArraySumExample {
    public static void main(String[] args) {
        int[] arr = {1, 2, 3, 4, 5};

        int sum = 0;
        for (int num : arr) {
            sum += num;
        }

        System.out.println("배열 요소의 합: " + sum);
    }
}

코드 설명 :

- int[] arr = {1, 2, 3, 4, 5}; → 배열 선언과 동시에 값들 넣어서 초기화

- int sum = 0; → 합계 저장할 변수 0으로 초기화

- for (int num : arr) → 향상된 for문으로 배열 요소를 하나씩 꺼냄

- sum += num; → 꺼낸 요소를 합계에 누적

출력 결과 :

배열 요소의 합: 15

for문 vs 향상된 for문

구분일반 for문향상된 for문
인덱스 접근OX
코드 간결함보통깔끔함
사용 추천인덱스 필요할 때전체 순회할 때
// 일반 for문
for (int i = 0; i < arr.length; i++) {
    System.out.println(arr[i]);
}

// 향상된 for문
for (int num : arr) {
    System.out.println(num);
}

3. 자주 나오는 오류 TOP 3

1. ArrayIndexOutOfBoundsException

배열 인덱스를 범위 밖으로 접근할 때 발생
int[] arr = {1, 2, 3};
System.out.println(arr[3]);
오류 설명 :

배열의 유효 인덱스는 0부터 arr.length - 1까지.

위 코드는 3칸짜리 배열에서 arr[3]을 접근하려 해서 오류

해결법 :
System.out.println(arr[arr.length - 1]);
❗반복문 쓸 때는 i < arr.length 조건 꼭 확인

2. NullPointerException

배열이 null인데 접근하거나 조작할 때 발생
int[] arr = null;
System.out.println(arr.length);
오류 설명 :

배열이 실제로 생성되지 않았는데 .length나 [0] 등을 쓰면 오류 발생

해결법 :
int[] arr = new int[3];
System.out.println(arr.length);
❗배열 선언만 해놓고 new로 생성하지 않으면 null 상태

3. 배열 초기화 실수

선언만 하고 배열을 바로 쓰는 실수
int[] arr;
arr[0] = 10;
오류 설명 :

arr은 참조만 되어 있고 실제 배열 공간은 없음.

메모리 공간이 없는데 값을 넣으려고 하니 오류 발생

해결법 :
int[] arr = new int[3];
arr[0] = 10;
❗배열 선언 후 반드시 new로 메모리를 할당해야 함

4. 핵심 요약

- 배열 : 같은 타입 데이터를 연속 공간에 저장하는 자료구조

- 인덱스는 0부터 시작

- 마지막 인덱스는 length - 1

- .length로 배열 크기 확인

- 인덱스 필요하면 일반 for문 사용

- 전체 순회만 하면 향상된 for문 사용

- 같은 타입 데이터를 여러 개 다룰 때 매우 유용

0개의 댓글