Programming

; develop a program

Back-End/Java

[Java] 배열(Array)

Clloud_ 2023. 2. 4. 10:30
반응형

이번 포스팅에서는 자바(Java)에서 배열(Array)에 대하여 공부를 해보고자 한다.

 


배열이란

배열은 자료가 연속으로 나열된 자료구조를 말하며, 자료구조의 가장 기초 내용이다.

배열을 사용하면 자료형이 같은 자료 여러 개를 한 번에 관리할 수 있다.

자료구조(data structure)
데이터를 어떻게 관리하면 좋은지 공부하는 분야

 

예를 들어 학생 100명의 학번을 관리해야 할 때, 학번의 자료형을 정수라 하면 int studentID1, int studentID2,  ··· , int studentID100과 같이 변수 100개를 선언해서 사용해야 한다.

학번에 대한 여러 개 변수를 일일이 쓰는 것은 너무 번거롭기 때문에 배열을 사용한다.

 

 


배열 선언과 초기화

배열을 사용하려면 먼저 배열을 선언해야 한다.

변수와 마찬가지로 자료형을 함께 선언한다.

 

배열을 선언하는 문법

자료형[ ]  배열 이름 = new  자료형[개수];
자료형  배열 이름[ ] = new  자료형[개수];
  • 배열을 이루는 각각의 자료를 배열 요소라고 하며, 배열 요소는 자료형이 모두 같다.
  • 저장하려는 자료의 성격에 맞게 자료형을 정하고 선언하려는 배열 요소 개수만큼 [ ] 안에 적는다.
  • new 예약어는 배열을 새로 만들라는 의미다.

 

예제

학생들의 학번을 배열로 선언

int[] studentIDs = new int[10]	//int형 요소가 10개인 배열 선언
  • int형 요소가 10개인 배열을 선언한 것이다.

 

이렇게 선언했을 때 메모리 상태를 그림으로 나타내면 다음과 같다.

 

  • 배열을 선언하면 선언한 자료형과 배열 길이에 따라 메모리가 할당된다.
  • 자료형이 int형이므로 배열 요소를 저장할 수 있는 공간의 크기는 전부 4바이트로 동일하다.
  • 배열 요소를 저장할 수 있는 공간이 총 10개 이므로 이 배열을 위해 총 40 바이트의 메모리가 할당되는 것이다.

 

배열 초기화

자바에서 배열을 선언하면 그와 동시에 각 요소의 값이 초기화된다.

배열의 자료형에 따라 정수는 0, 실수는 0.0, 객체 배열은 null로 초기화되며, 다음처럼 배열 선언과 동시에 특정 값으로 초기화할 수도 있다.

배열이 초기화 요소의 개수만큼 생성되므로 [ ] 안의 개수는 생략한다.

int[] studentIDs = new int[] {101, 102, 103};	//개수는 생략함

 

다음과 같이 값을 넣어 초기화할 대 [ ] 안에 개수를 쓰면 오류가 발생한다.

int[] studentIDs = new int[3] {101, 102, 103};	//오류 발생

 

선언과 동시에 초기화할 때 다음과 같이 new int [ ] 부분을 생략할 수도 있다.

int[] studentIDs = {101, 102, 103};	//int형 요소가 3개인 배열 생성

 

다음과 같이 배열의 자료형을 먼저 선언하고 초기화하는 경우에는 new int [ ]를 생략할 수 없다.

int[] studentIDs;	//배열 자료형 선언
studentIDs = new int[] {101, 102, 103};	//new int[]를 생략할 수 없음

 


인덱스 연산자 [ ]

[ ]는 배열을 처음 선언할 때 사용한 연산자이다.

배열 이름에 [ ]를 사용하는 것을 인덱스 연산이라고 한다.

 

인덱스 연산자의 기능

  • 배열 요소가 저장된 메모리 위치를 찾아주는 역할
변수 이름으로 변수가 저장된 메모리 위치를 찾는 것처럼, 배열에서 [i] 인덱스 연산을 하면 i번째 요소의 위치를 찾아 해당 위치의 메모리에 값을 넣거나 이미 저장되어 있는 값을 가져와서 사용할 수 있다.

 

예를 들어 int형으로 선언한 num 배열의 네 번째 요소에 값 25를 저장하고, 그 값을 가져와 int형 변수 age에 저장한다면 다음 그림과 같다.

 

 


배열 복사하기

기존 배열과 자료형 및 배열 크기가 똑같은 배열을 새로 만들거나 배열의 모든 요소에 자료가 꽉 차서 더 큰 배열을 만들어 기존 배열에 저장된 자료를 가져오려 할 때 배열을 복사한다.

 

배열을 복사하는 방법

  1. for문을 사용하여 각 요소 값을 반복해서 복사하는 방법
  2. System.arraycopy( ) 메서드를 사용하여 복사하는 방법

System.arraycopy(src, srcPos, dest, destPos, length) 메서드에서 각 매개변수 의미는 다음과 같다.

매개변수 설명
src 복사할 배열 이름
srcPos 복사할 배열의 첫 번째 위치
dest 복사해서 붙여 넣을 대상 배열 이름
destPos 복사해서 대상 배열에 붙여 넣기를 시작할 첫 번째 위치
length src에서 dest로 자료를 복사할 요소 개수

 


반응형

'Back-End > Java' 카테고리의 다른 글

[Java] ArrayList 클래스  (0) 2023.02.04
[Java] 다차원 배열  (0) 2023.02.04
[Java] 싱글톤 패턴(singleton pattern)  (0) 2023.02.03
[Java] 변수 유효 범위  (0) 2023.02.03
[Java] static 변수  (0) 2023.02.03