본문 바로가기
Java

배열

by 쟈근꿈틀이 2022. 3. 29.
728x90

배열은 인덱스(번호)와 인덱스에 대응하는 데이터로 이뤄진 자료 구조이다.

배열에는 같은 종류에 데이터들이 순차적으로 저장되고, 각 데이터의 위치는 인덱스로 나타낼 수 있다.


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

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

 

int[] scores;

 

위의 코드는 5개의 정수형 데이터들을 저장할 배열 scores를 선언한 것이다.

배열 이름인 scores는 정수형 데이터가 아닌 정수형 데이터의 주소 값을 가리킨다. 

즉, scores는 정수형 배열 객체가 아니고 정수형 배열 객체를 가리킬 수 있는 참조 변수이다.

int[] scores를 선언은 정수를 담을 배열이 아닌 정수형 배열의 참조 변수를 생성한 것임을 명심하자!

scores[0]은 정수형 배열 객체 중 첫 번째 정수형 데이터의 주소를 나타내고, scores[1]은 동일 객체의 두 번째 정수형 데이터의 주소를 나타낸다.

 

int[] scores = new int[5];

 

정수형 데이터를 5개 담을 수 있는 변수를 생성하기 위해서는 new int[5]를 한다.

이제 int형 데이터를 저장할 수 있는 배열이 생성되었다.

 

우리는 scores라는 배열을 생성만 했을 뿐 초기화를 하지는 않았다.

자바에서는 초기화를 하지 않았다면 묵시적 초기화를 통해 배열의 모든 데이터들이 0으로 초기화됐거나, 컴파일 오류가 발생할 수 있다.

 

int[] scores = new int[]{1, 2, 3, 4, 5}; (O)

int[] scores = new int[5]{1, 2, 3, 4, 5}; (X)

 

배열을 생성하면서 동시에 초기화를 할 수 있다.

정수형 데이터가 5개 생성되며 각 값은 1, 2, 3, 4, 5로 초기화된다.

{ } 안의 수가 5개이므로 배열 객체의 크기는 5가 된다.

이때, 입력받은 데이터의 개수만큼 공간을 자동으로 할당받기 때문에 new int[]로 입력해야 한다.

 

참조형 데이터를 저장하는 배열도 생성할 수 있다.

names는 문자열 데이터 공간의 주소 값을 가리킬 수 있는 참조 변수이고, new String[5]로 5개의 문자열 데이터를 저장할 수 있는 배열이 생성됐다.   

 

해당 배열의 첫 번째 데이터에 접근하려면 names[0]을 하면 된다.

배열의 크기만큼 반복문을 실행하고 싶을 때는 배열의 length 필드(변수)를 사용한다.

names.length는 names라는 참조 변수가 가리키고 있는 배열의 크기이다.

 

names[i] = sc.next()로 사용자가 입력한 문자열 데이터를 names가 가리키는 배열의 i번 째 공간에 저장한다.

5개의 문자열을 모두 입력받은 후, System.out.print(names[i] + " ")로 names에 저장된 데이터들을 순서대로 출력한다.

 


배열의 복사

반복문을 통해 각 배열에 저장돼 있는 데이터의 값을 일일이 복사할 수 있다.

 


public static void arraycopy(복사할 원본 배열, 원본 배열의 위치, 대상 배열, 대상 배열의 위치, 복사할 길이) { .... }

또는 System클래스의 arraycopy메서드를 사용할 수도 있다.

 

 

 

 

728x90

'Java' 카테고리의 다른 글

객체 지향 프로그래밍이란?  (0) 2022.03.30
다차원 배열  (0) 2022.03.29
[반복문]for문, while문, do~while문  (0) 2022.03.28
switch문  (0) 2022.03.28
if문  (0) 2022.03.28