Myo-Kyeong Tech Blog

[ JAVA ] JAVA 기초 문법 - 배열 ( Array ) 이란 ? 본문

Programming/Java

[ JAVA ] JAVA 기초 문법 - 배열 ( Array ) 이란 ?

myo-kyeong 2023. 5. 30. 20:02
728x90
반응형

 

배열이란?

  • 동일한 데이터 타입의 값들을 연속으로 저장할 수 있는 구조
  • 단일 변수명으로 여러 값을 저장하고, 각 값은 인덱스를 통해 접근할 수 있음

 

 

배열 선언과 생성

데이터 타입 뒤에 대괄호([])를 붙여 배열을 선언한 뒤, 'new' 키워드를 사용하여 배열을 생성하고 배열의 크기를 지정해주면 됩니다. 

int[] myArray;             // 배열 선언
myArray = new int[10];     // 배열 생성

 

배열을 선언하고 초기화하는 과정은 두 단계로 나누어서 수행할 수도 있지만, 다음과 같이 배열의 선언과 생성을 한 번에 수행할 수도 있습니다.

int[] myArray = new int[10];   // 배열 선언 및 생성

 

배열에 값 할당

각 배열 원소는 인덱스를 통해 접근할 수 있으며, 인덱스는 0부터 시작합니다. 

myArray[0] = 1;   // 첫 번째 원소에 1 할당
myArray[1] = 2;   // 두 번째 원소에 2 할당

 

배열의 초기화

Java에서 배열을 선언하면서 동시에 초기값을 할당할 경우에는 배열의 크기를 지정하지 않아도 됩니다. Java 컴파일러가 초기값의 개수를 세어서 배열의 크기를 결정합니다. 

int[] myArray = {1, 2, 3, 4, 5};  // 배열 선언과 동시에 초기값 할당

 

배열에서 값 가져오기 

int firstElement = myArray[0];  // 첫 번째 원소 가져오기
int secondElement = myArray[1]; // 두 번째 원소 가져오기
// for 문을 사용하여 배열의 모든 원소에 접근하기

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

 

배열이 필요한 이유

30명의 학생들이 있고 이 학생들의 점수를 관리한다고 가정해봅시다. 배열을 사용하지 않고 각 학생의 점수를 별도의 변수에 저장한다면 30개의 서로 다른 변수가 필요합니다. 

int student1Score = 85;
int student2Score = 90;
...
int student30Score = 92;

 

만일, 이 30명의 학생들의 총 점수를 구한다면 각각의 변수를 하나씩 더해주어야 합니다. 

int totalScore = student1Score + student2Score + ... + student30Score;

 

이런 방식으로 학생 점수를 관리할 경우, 코드가 상당히 길어지며 학생 수가 늘어날 때마다 변수를 추가하고 총점 계산 코드를 계속해서 수정해야 합니다. 또한, 각 학생의 점수를 개별적으로 관리하면서 코드의 가독성이 매우 떨어집니다. 

이제 배열을 통해 같은 타입의 여러 데이터를 단일 이름으로 관리하여 위의 문제를 해결해보도록 하겠습니다.

int[] scores = new int[30]; // 30명의 학생 점수를 저장할 수 있는 배열 생성
//for 반복문을 사용하여 배열 통째로 순회하기

int totalScore = 0;
for(int i = 0; i < scores.length; i++) {
    totalScore += scores[i];
}

배열을 사용하면  학생 수가  증가하더라도 배열의 크기를 조정하는 것으로 간단하게 대응할 수 있습니다. 또한, 각 학생의 점수를 배열 안에서 순차적으로 관리함으로써 코드의 가독성이 크게 향상됩니다. 

 

JAVA 배열 주의사항

  • 한 번 크기가 정해진 배열의 크기를 늘리거나 줄일 수 없습니다. 더 많은 값을 저장하려면 새로운 배열을 생성하고 기존 값들을 복사해야 합니다.
  • 배열 인덱스는 0부터 시작합니다. 첫 번째 인덱스는 0이고, 마지막 원소의 인덱스는 배열 크기 -1 입니다.
  • 배열의 범위를 벗어나는 인덱스를 접근하려고 하면 ArrayIndexOutOfBoundsException 에러가 발생합니다.

 

728x90
반응형