도서 정리/자바의 정석

[자바의 정석] CH05 배열 정리

다아빈 2025. 4. 4. 20:50
728x90
반응형

자바의 정석 책을 공부하고 정리한 글입니다!

혹시라도 틀린 부분이 있다면 친절하게 알려주세요.

 

감사합니다!


CH5. 배열

배열이란 같은 타입의 여러 변수하나의 묶음으로 다루는 것을 말합니다. 생성 방법은 다음과 같습니다.

타입[] 변수이름;
변수이름 = new 타입[길이];

// 혹은

타입[] 변수이름 = new 타입[길이];

다음은 배열의 크기가 5인 int형 배열을 생성하는 코드입니다.

int[] score = new int[5]; // 크기가 5인 int형 배열 생성

 

score은 int형 데이터를 5개 저장할 수 있는 배열이 되는 것입니다!

 

배열을 이해하려면 다음의 용어에 익숙해지셔야 합니다!

  • 배열의 요소: 생성된 배열의 각각의 저장공간을 말함: '배열이름[인덱스]'로 접근 가능
  • 인덱스: 배열의 요소마다 붙여진 일련번호로 각 요소를 구별하는데 사용됨 -> 요소의 순서 번호로 생각 

보통 순서를 정할 때, 1번부터 순서번호를 지정하잖아요? 그런데 인덱스는 1번부터 시작이 아닌, 0번부터 시작입니다! 따라서 인덱스의 범위는 0부터 배열길이-1 까지 입니다. 위의 score 배열의 경우는 배열의 길이가 5이며, 인덱스 범위는 0부터 4까지(0, 1, 2, 3, 4) 입니다.

 

배열을 생성할 때 [] 안에 꼭! 저장할 공간의 개수(=배열의 길이) 작성해주셔야 합니다. 이 길이는 배열의 요소의 개수, 즉 값을 저장할 수 있는 공간의 개수입니다! 그러니 양의 정수 값을 적어야 하겠죠? (물론 0도 가능합니다.)

 

자바에서는 JVM이 모든 배열의 길이를 별도로 관리하며, '배열이름.length'로 배열의 길이를 구할 수 있습니다. 아까의 score 배열의 경우 다음과 같이 작성할 수 있습니다:

int length = score.length;

이렇게 되면 변수 length에 score의 길이인 5가 저장됩니다!

배열은 한 번 생성하면 길이를 변경할 수 없기 때문에 생성된 배열의 길이는 변경할 수 없습니다.

 

만약 배열의 길이를 변경하고 싶다면 다음과 같은 방법을 사용할 수 있습니다:

  1. 더 큰 배열을 새로 생성한다.
  2. 기존 배열의 내용을 새로운 배열에 복사한다.

배열의 초기화

배열을 초기화하는 방법은 다음과 같습니다:

// 1.
int[] score = new int[5];
score[0] = 10; 
score[1] = 20;
score[2] = 30;
score[3] = 40;
score[4] = 50;

// 2.
int[] score = new int[] {10, 20, 30, 40, 50};

// 3.
int[] score = new int[5];
score = {10, 20, 30, 40, 50};

// 4. 
int[] score = {10, 20, 30, 40, 50};

위의 코드는 모두 score 배열에 차례로 10, 20, 30, 40, 50 을 저장하는 방법입니다! 그럼 0번 인덱스부터 10, 20, 30, 40, 50 이 차례로 저장되는 것이지요.

 

초기화를 안 하는 경우도 있는데, 이 경우에는 default값으로 초기화 됩니다.

  • int형 배열의 default 값은 0
  • String형 배열의 default 값은 null

2차원 배열의 선언과 인덱스

2차원 배열을 선언하는 방법은 1차원 배열과 같습니다.

다만 [] 가 하나 더 들어갈 뿐입니다!

int[][] score = new int[4][3]; // 4행 3열의 2차원 배열을 생성 (배열의 크기는 4X3)

배열 초기화는 다음과 같이 진행합니다.

// 1.
int[][] arr = new int[][]{{1, 2, 3}, {4, 5, 6}};

// 2.
int[][] arr = {{1, 2, 3}, {4, 5, 6}};
728x90
반응형