
지금까지 배운 방식대로라면 정수형 데이터 10개를 저장하려면 int 변수를 10개 선언해야 한다.
하지만 데이터가 늘어날수록 변수 선언이 많아지고 관리가 어려워진다.
배열(Array)은 같은 자료형의 여러 데이터를 하나의 변수로 묶어서 관리하는 구조이다. (이 내용은 Java 기준이다.)
배열 선언 기본 문법은 다음과 같다.
자료형[] 변수명;
선언과 동시에 초기화하는 방식은 다음과 같다.
int[] arr01 = { 1, 2, 3, 4, 5 };
배열을 System.out.println(arr01)처럼 출력하면 배열 내부 값이 아니라 주소값(@ 포함)이 출력된다.
배열 내부의 element를 확인하려면 index로 접근해야 한다.
public class Array01 {
public static void main(String[] args) {
// 배열 선언 및 초기화
int[] arr01 = {1, 2, 3, 4, 5};
// 배열 자체를 출력하면 주소값만 출력됨
System.out.println(arr01);
// 배열명[index] 형태로 element 접근 가능
System.out.println(arr01[0]);
System.out.println(arr01[1]);
System.out.println(arr01[2]);
System.out.println(arr01[3]);
System.out.println(arr01[4]);
// for문을 이용한 전체 출력
for (int i = 0; i < arr01.length; i++) {
System.out.print(arr01[i] + " ");
}
}
}
배열 길이 - 1이다.배열을 순회할 때는 항상 다음 형태를 사용하는 것이 안전하다.
for (int i = 0; i < 배열명.length; i++) Java에서 new로 배열을 생성하면 방의 개수를 미리 지정해야 한다. 또한 자료형에 따라 기본값으로 자동 초기화된다.
int → 0double → 0.0String → nullpublic class ArrayInit {
public static void main(String[] args) {
int[] arr03 = new int[10];
System.out.println(arr03[0]); // 0
// 특정 index 값 대입
arr03[0] = 10;
System.out.println(arr03[0]); // 10
}
}
40칸짜리 배열을 만들고, 41부터 80까지 순서대로 대입한 뒤 출력하는 예제이다.
public class ArrayFill {
public static void main(String[] args) {
int[] arr04 = new int[40];
for (int i = 0; i < arr04.length; i++) {
arr04[i] = i + 41;
System.out.print(arr04[i] + " ");
}
}
}
String 배열을 만들어 "안", "녕", "하", "세", "요"를 저장하고 한 번에 출력한다.
public class ArrayString {
public static void main(String[] args) {
String[] arr05 = {"안", "녕", "하", "세", "요"};
for (int i = 0; i < arr05.length; i++) {
System.out.print(arr05[i]);
}
}
}
사용자에게 입력받은 값으로 배열 크기를 정하고, 반복문으로 데이터를 저장한 뒤 총합을 계산하는 예제이다. 배열과 반복문이 결합되면 동적인 데이터 처리가 가능해진다.
import java.util.Scanner;
public class Array02 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("몇 명의 학생을 등록하시겠습니까?: ");
int num1 = scanner.nextInt();
String[] humans = new String[num1];
for (int i = 0; i < num1; i++) {
System.out.print((i + 1) + "번 학생의 이름을 등록하세요: ");
humans[i] = scanner.next();
}
System.out.print("몇 명의 학생 점수를 입력하시겠습니까?: ");
int num2 = scanner.nextInt();
double[] scores = new double[num2];
double sum = 0;
for (int j = 0; j < num2; j++) {
System.out.print((j + 1) + "번 학생의 점수를 입력하세요: ");
scores[j] = scanner.nextDouble();
sum += scores[j];
}
System.out.println("학생들의 점수 총합은 " + sum + "점 입니다.");
scanner.close();
}
}
배열은 단순히 변수를 여러 개 묶는 문법이 아니라, 반복문과 결합했을 때 진짜 힘을 발휘하는 구조라는 걸 느꼈다. 특히 length를 기준으로 순회하는 습관을 들이지 않으면 index 오류가 쉽게 발생할 수 있다는 점도 중요했다.
앞으로 객체 배열, 2차원 배열로 확장될 때도 지금 배운 index와 length 개념이 그대로 기반이 된다. 그래서 배열은 반드시 정확히 이해하고 넘어가야 할 핵심 개념이라고 느꼈다.