Java 배열(Array)의 개념과 특징 완벽 정리
📌 자바 프로그래밍의 기초, 배열 개념부터 사용법까지 한 번에 알아보세요
자바(Java)를 처음 배우거나 프로그래밍을 시작할 때 꼭 이해해야 하는 개념 중 하나가 바로 배열(Array)입니다.
변수를 하나씩 선언하지 않고 여러 개의 값을 저장할 수 있어서 코드의 효율성을 높여주죠.
하지만 배열의 구조나 사용법을 제대로 이해하지 못하면 오류가 발생하거나 원하는 결과를 얻기 어려울 수 있습니다.
이번 글에서는 자바 배열의 핵심 개념부터 실제 활용 예시까지 초보자도 이해하기 쉽게 정리해드릴게요.
배열은 같은 자료형의 데이터를 순차적으로 저장하는 자료구조로, 각 요소에 인덱스(Index)를 통해 접근합니다.
자바 배열은 선언과 동시에 고정된 크기로 생성된다는 특징이 있어서 메모리 구조에 대한 이해도 필요하답니다.
또한 배열을 다루는 다양한 방법도 함께 익혀두면 훨씬 더 유연한 코딩이 가능해져요.
그럼 지금부터 배열의 모든 것을 차근차근 알아보겠습니다.
📋 목차
🔗 배열(Array)의 정의와 특징
프로그래밍에서 배열(Array)은 동일한 자료형의 데이터를 순차적으로 저장할 수 있는 구조입니다.
배열의 각 요소는 고유한 번호인 인덱스(index)로 구분되며, 이 인덱스를 통해 원하는 위치의 데이터를 빠르게 접근할 수 있습니다.
자바(Java)에서는 배열이 객체로 취급되며, 힙 메모리에 저장됩니다.
자바 배열의 가장 큰 특징은 크기가 고정되어 있다는 점입니다.
즉, 배열을 생성할 때 한 번 지정된 크기는 프로그램 실행 중에 변경할 수 없기 때문에 필요한 요소 수를 미리 예측하고 선언해야 합니다.
이러한 구조는 메모리 사용에 효율적일 수 있지만, 크기 변경이 불가능하다는 점에서 ArrayList와 같은 가변 컬렉션과는 다르게 사용됩니다.
- 🔢배열은 0번 인덱스부터 시작한다
- 📦모든 배열은 객체로 생성된다
- 📏크기는 생성 시 고정된다
배열을 사용하면 다수의 데이터를 하나의 변수 이름으로 관리할 수 있어 가독성과 유지보수성이 높아집니다.
하지만 배열의 크기를 잘못 설정하거나 인덱스를 잘못 접근하면 ArrayIndexOutOfBoundsException 오류가 발생할 수 있으므로 주의가 필요합니다.
💬 자바 배열은 선언된 후 크기를 바꿀 수 없습니다. 만약 크기를 동적으로 다뤄야 한다면 List 계열을 사용하는 것이 좋습니다.
🛠️ 배열 선언 및 초기화 방법
자바에서 배열을 사용하려면 먼저 배열을 선언하고, 그다음 메모리를 할당해야 합니다.
배열의 선언 방법은 크게 두 가지로 나눌 수 있어요.
🧱 배열 선언 방법
기본 문법은 다음과 같습니다.
// 방법 1
int[] scores;
scores = new int[5];
// 방법 2 (선언과 동시에 메모리 할당)
int[] numbers = new int[10];
배열을 선언할 때는 대괄호([])를 자료형 뒤에 붙이는 것이 일반적인 스타일이며, 배열의 크기는 new 키워드를 통해 지정합니다.
배열이 생성되면 각 요소는 자료형에 따라 기본값으로 자동 초기화됩니다.
예를 들어 int형은 0, boolean은 false, String은 null이 할당됩니다.
🧪 배열 초기화 방법
자바에서는 배열을 선언과 동시에 직접 초기화할 수도 있습니다.
이를 통해 반복문 없이도 필요한 값을 한꺼번에 지정할 수 있어요.
String[] colors = {"red", "green", "blue"};
int[] primes = {2, 3, 5, 7, 11};
초기화를 할 때는 new 키워드를 생략할 수 있으며, 배열 요소는 중괄호 {}를 사용해 나열합니다.
단, 선언과 할당을 따로 할 경우에는 반드시 new 자료형[]을 사용해야 합니다.
⚙️ 배열 요소 접근과 출력 방법
자바 배열의 가장 기본적인 사용 방식은 배열에 저장된 각 요소에 인덱스를 통해 접근하고 값을 읽거나 변경하는 것입니다.
배열의 인덱스는 0부터 시작하며, 마지막 인덱스는 배열 길이보다 1 작은 값입니다.
🔍 요소에 접근하고 값 변경하기
int[] scores = {90, 80, 70, 85, 95};
System.out.println(scores[0]); // 첫 번째 요소 출력 → 90
scores[2] = 100; // 세 번째 요소 값 변경
인덱스를 통해 원하는 위치의 값을 읽을 수 있고, 대입 연산자를 통해 값을 수정할 수도 있습니다.
존재하지 않는 인덱스를 접근하면 ArrayIndexOutOfBoundsException이 발생하니 항상 유효한 범위인지 확인해야 합니다.
🔁 for문과 foreach문으로 출력하기
배열에 저장된 모든 값을 반복문을 이용해 출력할 수 있습니다.
자바에서는 일반적인 for문 외에도 향상된 for문(foreach)을 사용할 수 있어요.
// 일반 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번째 요소를 접근하려고 하면 아래와 같은 오류가 발생하죠.
int[] arr = new int[3];
arr[3] = 10; // 오류 발생: 인덱스 범위 초과
⚠️ 주의: 배열의 마지막 인덱스는 배열 길이 - 1입니다. 예외를 방지하려면 항상 arr.length 속성을 기준으로 반복문을 구성하세요.
💬 배열에 값을 넣거나 읽을 때는 항상 인덱스 범위를 먼저 확인하세요. 반복문 내에서는
i < arr.length조건을 사용하는 것이 안전합니다.
배열을 안전하게 사용하려면 반복문을 사용할 때 항상 length 속성을 기준으로 조건을 설정하고, 배열이 null이 아닌지 여부도 함께 점검하는 습관이 필요합니다.
💡 배열을 활용한 예제 코드 모음
이제까지 자바 배열의 개념과 선언 방법, 예외 처리까지 알아보았습니다.
이번에는 실제로 배열을 활용해 볼 수 있는 간단한 예제들을 살펴보겠습니다.
코드를 직접 실행해보면서 배열의 동작 원리를 체감해보세요.
📊 평균 점수 계산하기
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문을 함께 사용하면 전체 데이터를 순회하며 합계나 평균을 계산하는 작업을 간단하게 처리할 수 있습니다.
🔍 최댓값 구하기
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)
자바 배열은 크기를 변경할 수 없나요?
배열의 길이는 어떻게 확인하나요?
scores.length는 배열 scores의 길이를 반환합니다.
향상된 for문은 언제 사용하는 게 좋을까요?
문자열 배열도 만들 수 있나요?
String[] names = {"철수", "영희"}처럼 문자열 타입 배열도 생성할 수 있습니다.
배열을 복사하려면 어떻게 해야 하나요?
초기화하지 않은 배열의 값은 무엇인가요?
배열과 리스트는 어떤 차이가 있나요?
다차원 배열도 사용할 수 있나요?
int[][] matrix = new int[3][3];처럼 2차원 배열 등을 선언하여 표 형태의 데이터를 저장할 수 있습니다.
🧾 자바 배열 개념, 이렇게 정리하세요
자바에서 배열은 동일한 자료형의 데이터를 순차적으로 저장하고, 인덱스를 통해 요소를 접근할 수 있는 매우 기본적이고 중요한 자료구조입니다.
크기가 고정되어 있기 때문에 사용 전에 필요한 크기를 잘 고려해야 하며, 선언 → 생성 → 초기화 → 활용의 구조를 반드시 이해하고 있어야 합니다.
배열의 주요 특징부터 실제 활용 예제, 예외 처리까지 익히면 초급 수준의 프로그래밍 실력을 탄탄히 다질 수 있습니다.
배열을 완벽하게 이해하고 나면 리스트나 컬렉션 같은 더 복잡한 자료구조도 훨씬 쉽게 접근할 수 있어요.
이번 글을 통해 배열의 개념이 보다 명확해졌길 바랍니다.
🏷️ 관련 태그 : 자바배열, Java기초, 프로그래밍입문, 배열선언, 배열초기화, 향상된for문, 인덱스오류, ArrayList차이, 자바코딩예제, 자바기초정리