메뉴 닫기

Java 배열(Array)의 개념과 특징 완벽 정리


Java 배열(Array)의 개념과 특징 완벽 정리

📌 자바 프로그래밍의 기초, 배열 개념부터 사용법까지 한 번에 알아보세요

자바(Java)를 처음 배우거나 프로그래밍을 시작할 때 꼭 이해해야 하는 개념 중 하나가 바로 배열(Array)입니다.
변수를 하나씩 선언하지 않고 여러 개의 값을 저장할 수 있어서 코드의 효율성을 높여주죠.
하지만 배열의 구조나 사용법을 제대로 이해하지 못하면 오류가 발생하거나 원하는 결과를 얻기 어려울 수 있습니다.
이번 글에서는 자바 배열의 핵심 개념부터 실제 활용 예시까지 초보자도 이해하기 쉽게 정리해드릴게요.

배열은 같은 자료형의 데이터를 순차적으로 저장하는 자료구조로, 각 요소에 인덱스(Index)를 통해 접근합니다.
자바 배열은 선언과 동시에 고정된 크기로 생성된다는 특징이 있어서 메모리 구조에 대한 이해도 필요하답니다.
또한 배열을 다루는 다양한 방법도 함께 익혀두면 훨씬 더 유연한 코딩이 가능해져요.
그럼 지금부터 배열의 모든 것을 차근차근 알아보겠습니다.







🔗 배열(Array)의 정의와 특징

프로그래밍에서 배열(Array)은 동일한 자료형의 데이터를 순차적으로 저장할 수 있는 구조입니다.
배열의 각 요소는 고유한 번호인 인덱스(index)로 구분되며, 이 인덱스를 통해 원하는 위치의 데이터를 빠르게 접근할 수 있습니다.
자바(Java)에서는 배열이 객체로 취급되며, 힙 메모리에 저장됩니다.

자바 배열의 가장 큰 특징은 크기가 고정되어 있다는 점입니다.
즉, 배열을 생성할 때 한 번 지정된 크기는 프로그램 실행 중에 변경할 수 없기 때문에 필요한 요소 수를 미리 예측하고 선언해야 합니다.
이러한 구조는 메모리 사용에 효율적일 수 있지만, 크기 변경이 불가능하다는 점에서 ArrayList와 같은 가변 컬렉션과는 다르게 사용됩니다.

  • 🔢배열은 0번 인덱스부터 시작한다
  • 📦모든 배열은 객체로 생성된다
  • 📏크기는 생성 시 고정된다

배열을 사용하면 다수의 데이터를 하나의 변수 이름으로 관리할 수 있어 가독성과 유지보수성이 높아집니다.
하지만 배열의 크기를 잘못 설정하거나 인덱스를 잘못 접근하면 ArrayIndexOutOfBoundsException 오류가 발생할 수 있으므로 주의가 필요합니다.

💬 자바 배열은 선언된 후 크기를 바꿀 수 없습니다. 만약 크기를 동적으로 다뤄야 한다면 List 계열을 사용하는 것이 좋습니다.


🛠️ 배열 선언 및 초기화 방법

자바에서 배열을 사용하려면 먼저 배열을 선언하고, 그다음 메모리를 할당해야 합니다.
배열의 선언 방법은 크게 두 가지로 나눌 수 있어요.

🧱 배열 선언 방법

기본 문법은 다음과 같습니다.

CODE BLOCK
// 방법 1
int[] scores;
scores = new int[5];

// 방법 2 (선언과 동시에 메모리 할당)
int[] numbers = new int[10];

배열을 선언할 때는 대괄호([])를 자료형 뒤에 붙이는 것이 일반적인 스타일이며, 배열의 크기는 new 키워드를 통해 지정합니다.
배열이 생성되면 각 요소는 자료형에 따라 기본값으로 자동 초기화됩니다.
예를 들어 int형은 0, booleanfalse, Stringnull이 할당됩니다.

🧪 배열 초기화 방법

자바에서는 배열을 선언과 동시에 직접 초기화할 수도 있습니다.
이를 통해 반복문 없이도 필요한 값을 한꺼번에 지정할 수 있어요.

CODE BLOCK
String[] colors = {"red", "green", "blue"};
int[] primes = {2, 3, 5, 7, 11};

초기화를 할 때는 new 키워드를 생략할 수 있으며, 배열 요소는 중괄호 {}를 사용해 나열합니다.
단, 선언과 할당을 따로 할 경우에는 반드시 new 자료형[]을 사용해야 합니다.







⚙️ 배열 요소 접근과 출력 방법

자바 배열의 가장 기본적인 사용 방식은 배열에 저장된 각 요소에 인덱스를 통해 접근하고 값을 읽거나 변경하는 것입니다.
배열의 인덱스는 0부터 시작하며, 마지막 인덱스는 배열 길이보다 1 작은 값입니다.

🔍 요소에 접근하고 값 변경하기

CODE BLOCK
int[] scores = {90, 80, 70, 85, 95};

System.out.println(scores[0]);  // 첫 번째 요소 출력 → 90
scores[2] = 100;                // 세 번째 요소 값 변경

인덱스를 통해 원하는 위치의 값을 읽을 수 있고, 대입 연산자를 통해 값을 수정할 수도 있습니다.
존재하지 않는 인덱스를 접근하면 ArrayIndexOutOfBoundsException이 발생하니 항상 유효한 범위인지 확인해야 합니다.

🔁 for문과 foreach문으로 출력하기

배열에 저장된 모든 값을 반복문을 이용해 출력할 수 있습니다.
자바에서는 일반적인 for문 외에도 향상된 for문(foreach)을 사용할 수 있어요.

CODE BLOCK
// 일반 for문
for(int i = 0; i < scores.length; i++) {
    System.out.println(scores[i]);
}

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

향상된 for문은 배열의 모든 요소를 순회할 때 유용하지만, 인덱스를 직접 다룰 수 없다는 제약이 있습니다.
값만 순서대로 출력하거나 읽을 때는 매우 간단하고 직관적인 문법이에요.


🔌 배열 관련 주요 예외와 주의사항

배열을 사용할 때는 문법적인 선언과 접근뿐 아니라 예외 상황에 대한 이해도 매우 중요합니다.
특히 배열은 고정된 크기이기 때문에 실수로 범위를 벗어나거나, 초기화를 하지 않은 상태에서 접근하면 오류가 발생할 수 있어요.

  • 🚫인덱스 범위를 초과하면 런타임 오류가 발생
  • 선언만 하고 초기화하지 않으면 NullPointerException 발생 가능
  • 📏length는 배열의 길이를 나타내는 속성이다

⚠️ 자주 발생하는 예외: ArrayIndexOutOfBoundsException

배열을 사용할 때 가장 많이 마주치는 예외는 ArrayIndexOutOfBoundsException입니다.
예를 들어 크기가 3인 배열에 4번째 요소를 접근하려고 하면 아래와 같은 오류가 발생하죠.

CODE BLOCK
int[] arr = new int[3];
arr[3] = 10; // 오류 발생: 인덱스 범위 초과

⚠️ 주의: 배열의 마지막 인덱스는 배열 길이 - 1입니다. 예외를 방지하려면 항상 arr.length 속성을 기준으로 반복문을 구성하세요.

💬 배열에 값을 넣거나 읽을 때는 항상 인덱스 범위를 먼저 확인하세요. 반복문 내에서는 i < arr.length 조건을 사용하는 것이 안전합니다.

배열을 안전하게 사용하려면 반복문을 사용할 때 항상 length 속성을 기준으로 조건을 설정하고, 배열이 null이 아닌지 여부도 함께 점검하는 습관이 필요합니다.







💡 배열을 활용한 예제 코드 모음

이제까지 자바 배열의 개념과 선언 방법, 예외 처리까지 알아보았습니다.
이번에는 실제로 배열을 활용해 볼 수 있는 간단한 예제들을 살펴보겠습니다.
코드를 직접 실행해보면서 배열의 동작 원리를 체감해보세요.

📊 평균 점수 계산하기

CODE BLOCK
int[] scores = {80, 90, 100, 70, 85};
int sum = 0;

for (int score : scores) {
    sum += score;
}

double average = (double) sum / scores.length;
System.out.println("평균 점수: " + average);

배열과 향상된 for문을 함께 사용하면 전체 데이터를 순회하며 합계나 평균을 계산하는 작업을 간단하게 처리할 수 있습니다.

🔍 최댓값 구하기

CODE BLOCK
int[] numbers = {15, 22, 8, 19, 31};
int max = numbers[0];

for (int num : numbers) {
    if (num > max) {
        max = num;
    }
}

System.out.println("최댓값: " + max);

배열의 첫 번째 값을 기준으로 최댓값을 찾아가는 방식은 실무에서도 자주 활용됩니다.
같은 방식으로 최솟값도 쉽게 구할 수 있어요.

💎 핵심 포인트:
배열은 단순한 데이터 저장 도구를 넘어서, 반복 처리와 조건문을 함께 사용하면 다양한 계산과 판단 로직을 구현하는 기반이 됩니다.


자주 묻는 질문 (FAQ)

자바 배열은 크기를 변경할 수 없나요?
네, 자바의 배열은 고정 크기입니다. 한 번 선언된 배열은 크기를 변경할 수 없으며, 크기 변경이 필요할 경우 ArrayList 같은 동적 컬렉션을 사용하는 것이 좋습니다.
배열의 길이는 어떻게 확인하나요?
배열이름.length 속성을 사용하면 됩니다. 예: scores.length는 배열 scores의 길이를 반환합니다.
향상된 for문은 언제 사용하는 게 좋을까요?
인덱스가 필요 없는 단순 순회 시에 가장 적합합니다. 예: 배열의 전체 값을 출력하거나 합계를 구할 때 사용하면 편리합니다.
문자열 배열도 만들 수 있나요?
물론입니다. 예를 들어 String[] names = {"철수", "영희"}처럼 문자열 타입 배열도 생성할 수 있습니다.
배열을 복사하려면 어떻게 해야 하나요?
System.arraycopy(), Arrays.copyOf() 또는 반복문을 사용할 수 있습니다. 각 방법은 목적에 따라 다르게 활용됩니다.
초기화하지 않은 배열의 값은 무엇인가요?
자바는 배열을 생성할 때 각 요소를 자료형에 따라 기본값으로 자동 초기화합니다. int는 0, boolean은 false, 객체는 null입니다.
배열과 리스트는 어떤 차이가 있나요?
배열은 고정 크기이며, 리스트(ArrayList)는 크기를 동적으로 변경할 수 있습니다. 또한 리스트는 다양한 메서드를 제공해 더 편리한 조작이 가능합니다.
다차원 배열도 사용할 수 있나요?
네, 가능합니다. 예: int[][] matrix = new int[3][3];처럼 2차원 배열 등을 선언하여 표 형태의 데이터를 저장할 수 있습니다.



🧾 자바 배열 개념, 이렇게 정리하세요

자바에서 배열은 동일한 자료형의 데이터를 순차적으로 저장하고, 인덱스를 통해 요소를 접근할 수 있는 매우 기본적이고 중요한 자료구조입니다.
크기가 고정되어 있기 때문에 사용 전에 필요한 크기를 잘 고려해야 하며, 선언 → 생성 → 초기화 → 활용의 구조를 반드시 이해하고 있어야 합니다.
배열의 주요 특징부터 실제 활용 예제, 예외 처리까지 익히면 초급 수준의 프로그래밍 실력을 탄탄히 다질 수 있습니다.
배열을 완벽하게 이해하고 나면 리스트나 컬렉션 같은 더 복잡한 자료구조도 훨씬 쉽게 접근할 수 있어요.
이번 글을 통해 배열의 개념이 보다 명확해졌길 바랍니다.


🏷️ 관련 태그 : 자바배열, Java기초, 프로그래밍입문, 배열선언, 배열초기화, 향상된for문, 인덱스오류, ArrayList차이, 자바코딩예제, 자바기초정리