5.1 배열의 선언과 생성 (Introduction to Arrays)
프로그래밍 중 성적, 이름, 날짜 등을 저장하기 위해 수많은 변수가 필요한 상황이 있을 수 있습니다. 이런 수많은 변수들을 효율적으로 다루기 위해 사용하는 것이 배열(Array) 입니다.
1. 배열이란?
"같은 타입 의 여러 변수를 하나의 묶음으로 구조화하여 다루는 것"을 말합니다. 배열을 다루기 위한 변수가 메모리에 여러 개의 방을 가지고 있는 형태로 구성되며, 각 방을 요소(element) 라고 부릅니다. 이 요소들은 메모리상에 연속적으로 붙어서 저장됩니다.
2. 배열의 선언과 생성
자바에서 배열은 기본형 데이터와 달리 객체(Object) 취급을 받으므로, 참조형 변수로 다뤄집니다.
1) 배열의 선언
배열을 다루기 위한 참조변수(일종의 리모컨)를 위한 공간이 먼저 만들어져야 합니다. 타입 뒤에 혹은 변수명 뒤에 대괄호 []를 붙여서 선언합니다. 보통 타입 뒤에 붙이는 방식을 선호합니다.
int[] score; // 타입 뒤에 []를 붙여서 선언 (권장)
String[] name;
2) 배열의 생성 (크기 할당)
배열을 선언하는 것은 단지 메모리에 참조변수 자리를 확보한 것일 뿐이며, 데이터를 실질적으로 저장할 수 있는 공간을 만들려면 자바의 메모리 할당 연산자인 new와 더불어 길이를 지정해 주어야 합니다.
int[] score; // 선언
score = new int[5]; // 크기가 5인 int형 배열 생성
// 대부분 선언과 생성을 동시에 진행합니다.
int[] score = new int[5];
3. 배열의 초기화와 길이
배열은 생성과 동시에 각 타입에 맞는 자동 기본값(default value) 으로 초기화됩니다. (예: int는 0, boolean은 false, String은 null)
하지만 개발자가 원하는 값으로 바로 만들 수도 있습니다.
배열 초기화
중괄호 {}를 사용해 값을 나열하면 그 개수만큼 자동으로 길이가 결정되고 데이터가 삽입됩니다. 이 때는 new int[] 구문을 생략할 수 있습니다.
int[] score = new int[]{ 50, 60, 70, 80, 90 };
// 위 코드를 대부분 생략하여 작성합니다.
int[] score = { 50, 60, 70, 80, 90 };
배열의 길이 (length)
생성된 배열의 요소의 개수를 알고 싶다면 배열 이름 뒤에 .length를 붙여 가져올 수 있습니다. 자바의 반복문(for)과 함께 많이 사용됩니다.
int[] score = new int[5]; // 길이가 5인 배열 생성
for (int i = 0; i < score.length; i++) { // 인덱스는 0부터 (length-1)까지 유효
score[i] = i * 10;
}
System.out.println("배열의 길이는: " + score.length);
중요한 특징: 매번 강조하지만 자바에서 배열의 길이는 한 번 생성하면 그 요소의 개수는 절대 변경할 수 없습니다. 길이가 더 길어야 한다면 새로운 큰 배열을 생성하여 복사해야 합니다.