자바(JAVA) 기초 함께 알아보자

자바(JAVA) 기초 함께 알아보자(9) - 배열(Array)

jay_the_code 2024. 9. 25. 16:54

지난번 while반복문에 이어서 이번글에서는 배열(Array)에 대해서

알아보겠습니다.

 

추후에 Arraylist라는 것을 알아볼 텐데 ArrayArraylist

다른 개념이니 주의해주세요!

 배열(Array)

 

먼저 배열을 이해하기 위해서 간단한 예시를 알아보겠습니다.

 

무작위 숫자 5개를 코드에서 사용하고 싶다고 가정해 봅시다.

 

그렇게 하려면 아래와 같이 변수를 5개 만들어야 하고

데이터를 불러올 때도 5개를 전부 따로 불러와야 합니다. 

// 무작위 숫자 선언하기
int a1 = 1;
int a2 = 9;
int a3 = 8;
int a4 = 4;
int a5 = 7;

System.out.println(a1);
System.out.println(a2);
System.out.println(a3);
System.out.println(a4);
System.out.println(a5);

 

지금은 5개라 코드 작성이 용이하지만 만약에 100개 1000개 10000개로

변수가 늘어난다고 가정하면 쉽지 않습니다.

 

또한 같은 부류의 데이터끼리 분류하기도 쉽지 않습니다.  

 

배열(Array)은 같은 자료형(데이터 타입)의 데이터를 연속된 공간에 저장하기 위한

자료구조입니다.

 

즉, 배열은 연관된 데이터를 묶음으로 저장해 데이터들을 다루기 용이하게

해주는 자료구조입니다.

배열(Array) 사용법

 

그럼 이제 배열(Array)을 선언하고 사용하는 방법에 대해서 알아보겠습니다.

 

기본적으로 배열은 아래와 같이 선언합니다.

// 배열 선언하는 방법
// 데이터타입[] 배열이름 = {데이터들};

int[] numbers = {1, 2, 3};
boolean[] bools = {true, false, false, true};
double[] doubleee = {1.2, 3.4, -5.2};
String[] names = {"James", "Mark", "Bob"};

 

 

배열(array) 안에 들어갈 데이터를 알고 있는 경우

위와 같이 배열을 만듬과 동시에 데이터를 집어넣을 수 있습니다.

 

그럼 다음으로 빈 배열을 생성하는 방법에 대해서 알아보겠습니다.

// 자료형[] 배열이름 = new 자료형[배열의 길이]

int[] nums = new int[50]; // 크기가 50인 배열 
String[] names = new String[5]; // 크기가 5인 배열

 

빈 배열을 생성한다는 것은 배열 안에 배열의 길이만큼

기본값(default)을 채워 넣는다는 것을 의미합니다.

 

기본값(default)

  •  int -> 0
  • double -> 0.0
  • boolean -> false
  • String -> null

별거 아닌 것 같지만 나중에 쉽게 에러가 발생할 수 있는 부분이기

때문에 암기하는 것을 추천합니다!

배열(Array)에 데이터 넣기

 

빈 배열에 데이터를 넣는 방법을 알아보기 전에 자바의 배열

0부터 시작하는 인덱스(index)를 사용한다는 것을 알아야 합니다.

 

예를 들어 배열의 첫 번째 항은 nums[1]이 아닌 nums[0] 입니다.

 

그럼 아래에서 빈 배열에 데이터를 넣는 방법을 알아보겠습니다.

int[] sizes = new int[4];

// index값에 주의!!
sizes[0] = 55;
sizes[1] = 66;
sizes[2] = 77;
sizes[3] = 88;

 

위와 같이 배열의 인덱스를 지정하고 데이터를 넣어주면 됩니다.

배열(Array)의 데이터에 접근(Access)하기

 

배열 안의 데이터접근하는 방법은 배열[인덱스] 로 가능합니다.

아래 예시를 통해 자세히 알아보겠습니다. 

String[] names = {"Apple", "Orange", "Banana"};

System.out.println(names[0]); // Apple
System.out.println(names[1]); // Orange
System.out.println(names[2]); // Banana

 

여기서 주의해야 할 점은 배열의 길이가 3 이기 때문에 인덱스 자리에

2보다 큰 수가 올 경우 out-of-bound로 runtime error가 발생하게 됩니다.

 

따라서 데이터에 접근할 때는 배열의 길이에 따라 인덱스를 설정해주어야 합니다.

배열(Array)의 데이터 변경(Modification)하기

 

다음으로 배열(Array)의 데이터를 변경하는 방법에 대해서 알아보겠습니다.

String[] brands = {"Nike", "Adidas", "Newbalance"};
System.out.println(brands); // {"Nike", "Adidas", "Newbalance"}

// array이름[index] = 변경할 데이터
brands[1] = "Puma";
System.out.println(brands); // {"Nike", "Puma", "Newbalance"}

 

변경할 부분을 배열의 인덱스를 지정해 주고 변경할 데이터를 작성해 주면

데이터가 변경됩니다.

 

아래와 같이 데이터에 접근(access)과 변경(modification) 동시에 하는 것도 가능합니다.

int[] n = {1, 2, 3, 4}
System.out.println(n[1]);

// 접근과 동시에 변경하기
n[1] = n[0] + (2*n[1]);
System.out.println(n[1]);
배열(array)의 길이

 

다음으로 배열의 길이확인하는 법에 대해서 알아보겠습니다.

 

배열의 길이를 확인하는 방법은 ' 배열의 이름.length ' 입니다.

 

이해하기 쉽게 아래 예시 참고 부탁드립니다.

String[] sizes = {"small", "medium", "large"};
System.out.println(sizes.length); // 3

 

배열의 길이는 이전글에서 알아보았던 for와 함께 자주 사용됩니다.

String[] drinks = {"coke", "juice", "beer", "vodka", "water"}

// 배열의 길이만큼 반복되는 for문을 통해
// 배열안의 데이터를 출력
for(int i = 0 ; i < drinks.length ; i++){
	System.out.println((i+1) + ": " + drinks[i]); // index 주의!!
}
// console
// 1. coke
// 2. juice
// 3. beer
// 4. vodka
// 5. water

 

배열의 길이만큼 반복되게 for문을 설정하여 각 데이터에 접근하고

출력할 수 있습니다.

 

지금까지 배열(array)에 대해서 알아보았습니다.

 

배열의 길이 이상으로는 데이터를 집어넣을 수 없기 때문에

초기에 배열의 길이 설정이 중요하다는 점 기억해 주세요!

 

배열에서 index값과 배열의 길이에 주의한다면 데이터를 효과적으로 저장 / 관리

용이하게 사용할 수 있습니다.

 

또한 추후에 다뤄볼 Arraylist와도 연관이 깊으니 잘 알아두시는 걸 추천합니다.

 

다음 글에서는 또 다른 반복문인 'for-each'에 대해서 알아보겠습니다.