[Codeit Review]/자바 (JAVA)

[03] 배열

uzlru 2026. 1. 16. 10:14

01. 배열

배열이란 동일한 타입의 값들을 하나의 묶음으로 묶은 자료 구조를 의미한다. 즉, 배열이란 같은 의미를 지니면서 서로 연관성이 있는 값들의 모임이라고 할 수 있다. 이러한 값 하나를 요소(element)라고 하는데, 배열은 요소를 연속한 메모리에 순차적으로 저장하고, 각 요소에 인덱스(index)를 부여함으로써 접근성을 높인다.

 

double[] temperatureOfJuly = {1, 2, ... , 31};

 

[사진 1] 배열의 순차적 요소 저장

 

 


 

02. 배열의 차원

차원이란 배열이 중첩된 정도로, 1차원 배열이나 2차원 배열이 주로 사용된다. 즉, 2차원 배열이란 배열의 요소가 또 다른 배열인 경우를 의미한다.

 

1. 1차원 배열

1차원 배열은 가장 일반적인 배열의 형태로, 배열의 요소가 배열이 아닌 배열을 의미한다. 1차원 배열을 선언할 때에는 배열의 타입 뒤에 대괄호([])를 붙여 선언 및 초기화한다.

 

이때 배열의 이름인 temperatureOfJuly는 참조 변수로, 배열이 시작되는 주소값을 저장하고 있다. 타입과 같이 선언되어 동시에 타입 크기의 메모리 공간을 할당 받는 기본 타입과 달리, 배열은 선언 당시에는 배열의 이름 만큼의 메모리 공간을 할당 받지만, new 키워드를 통해 배열을 생성하면 생성된 배열의 시작 주소이자 첫번째 요소의 주소값이  참조 변수에 할당된다.

 

double[] temperatureOfJuly;			// 참조 변수 저장 공간만 할당
temperatureOfJuly = new double[31];		// 실질적 배열 시작 주소 할당 (각 요소는 0.0으로 초기화)

double[] temperatureOfJuly = {1, 2, ... , 31};	// 선언 및 초기화

 

배열 내 특정 요소에 접근하고자 할 때에는 배열 참조 변수의 이름과 배열의 인덱스를 활용해야 한다. 즉, 배열_참조_변수_이름[인덱스]로, 참조 변수가 가진 배열 첫 번쨰 요소의 주소값에 인덱스 * 요소의 크기 값을 더해 각 요소의 주소값을 계산한다. 또한 배열은 배열이 시작되는 주소에 첫번째 요소의 값을 저장하므로, 배열의 인덱스는 1이 아니라 0부터 시작한다. 즉, 3번쨰 요소에 접근하고자 할 때 대입해야 하는 인덱스 값은 2이다.

 

배열이 가진 요소의 개수를 배열의 크기 또는 길이라고 한다. 이러한 배열의 길이는 배열_참조_변수_이름.length를 통해 얻을 수 있다.

 

double[] temperatureOfJuly = new double[31];	// 인덱스: 0 - 30, 크기: 31

 

2. 2차원 배열

2차원 배열은 배열의 요소가 배열인 배열을 의미한다. 즉, 외부 배열의 각 요소가 내부 배열의 주소값을 가진 자료 구조를 뜻한다. 마찬자기로 배열의 타입 뒤에 대괄호([]) 두 개를 붙여 선언 및 초기화한다.

 

int[][] kcal = new int[31][3];		// 외부 배열 크기: 31, 내부 배열 크기: 3

 


 

03. 가변 배열

2차원 이상의 다차원 배열에서는 1차원보다 자요로운 형태로 배열을 만들 수 있다. 즉, 배열이 2차원 이상일 때, 마지막 차수에 해당하는 배열의 길이를 고정하지 않아도 되며, 이러한 배열을 가변 배열이라고 한다. 이처럼 마지막 차수에 해당하는 배열의 크기를 지정하지 않으면 내부 배열의 크기를 자유롭게 지정할 수 있는 외부 배열만을 생성한다.

 

int[][] ages = new int[5][];	// 외부 배열 크기: 5, 내부 배열 크기: 미정

int[][] ages = new int[5][];

ages[0] = new int[5];
ages[1] = new int[6];
ages[2] = new int[7];
ages[3] = new int[8];
ages[4] = new int[9];

 

 


 

04. 배열 탐색

배열은 반복문을 통해 탐색할 수 있으며, 기본적으로 인덱스와 배열의 크기를 활용하여 탐색한다.

 

여기서 향상된 for 문은 읽기 전용 탐색만 가능하다. 즉, 향상된 for 문으로 배열을 순회하면서 배열의 값을 수정하는 것은 불가능하다.

 

int[] scores = { 100, 90, 85, 95, 100 };

// 1. for 문을 통한 탐색
int sum = 0;

for (int i = 0; i < scores.length; i++) {
	sum += scores[i];
}
System.out.println(sum);

// 2. while 문을 통한 탐색
int sum = 0;
int i = 0;

while (i < scores.length) {
	sum += scores[i];
	i++;
}
System.out.println(sum);

// 3. 향상된 for 문
int sum = 0;

for (int score: scores) {
	sum += score;
}
System.out.println(sum);

'[Codeit Review] > 자바 (JAVA)' 카테고리의 다른 글

[02] 문자열과 제어문  (0) 2026.01.15
[01] Java와 변수  (0) 2026.01.15