티스토리 뷰

반응형

#배열이란?

배열은 같은 타입의 여러 변수를 하나의 묶음으로 다룬 것이며, 각 저장공간이 연속적으로 배치되어 있다.

 

 

#배열의 선언과 생성

배열 선언

원하는 타입의 변수를 선언하고 변수 또는 타입에 배열임을 의미하는 대괄호[]를 붙이면 된다. 

타입[] 변수 이름;
타입 변수 이름[];

 

배열의 생성

배열을 선언한 다음에는 배열을 생성해야한다. 

배열을 선언하는 것은 단지 생성된 배열을 다루기 위한 참조변수를 위한 공간이 만들어지는 것으로,

배열을 생성해야만 비로소 값을 저장할 수 있는 공간이 만들어 지는 것이다. 

배열을 생성하기 위해서는 연산자 'new'와 함께 배열의 타입과 길이를 지정해 주어야 한다. 

 

타입[] 변수이름;                     // 배열 선언
변수이름 = new 타입[길이];   // 배열 생성

 

배열의 선언과 생성을 동시에 하는 방법 (대부분의 경우 이렇게 쓴다고 한다.)
타입[] 변수 이름 =  new 타입[길이] 

 

ex)  int[] num  = new int[5];  // 길이가 5인 int배열

 

아래 그림은 위의 코드가 실행되어 생성된 배열이다.  

변수 num은 저장공간이 아닌 참조 변수 이며, 값을 저장할 수 있는 공간은 num[0]부터 num[4]까지로 모두 5개이다. 

 

#배열의 인덱스

생성된 배열의 각 저장공간을 '배열의 요소'라고 하며, '배열이름[인덱스]'의 형식으로 배열의 요소에 접근한다.

인덱스는 배열의 요소마다 붙여진 일련 번호로 각 요소를 구별하는 데 사용한다

인덱스는 1이 아닌 0부터 시작하며, 인덱스의 범위는 0부터 '배열길의 - 1' 까지다.

 

ex) num[4] = 100; 

// 배열 num의 4번째 요소에 100을 저장한다.

// index : 0~3

 

#배열의 길이(배열이름.length)

자바에서는 자바 가상 머신(JVM)이 모든 배열의 길이를 별도로 관리하며, '배열 이름. length'를 통해서 배열의 길이에 대한 정보를 얻을 수 있다. 

배열은 한번 생성하면 실행하는 동안에는 변경할 수 없기 때문에 상수이다. 즉, 값을 읽을 수 만 있을 뿐 변경할 수 없다. 

 

#배열의 초기화

배열의 초기화란 배열의 각 요소에 처음으로 값을 저장하는 것으로  배열은 생성과 동시에 자동적으로 기본값(0)으로 

초기화된다. 

 

배열을 초기화하는 방법

배열을 초기화 하는 방법에는 두 가지가 있다. 

 

첫 번째, 배열의 생성과 초기화를 동시에 하는 방법.

ex) int[] num = new int[] {10, 20, 30, 40, 50};

저장할 값들은 괄호{} 안에 나열하고,  괄호{} 안의 값의 개수에 의해 배열의 길이가 자동으로 결정된다.

따라서 괄호[] 안에 배열의 길이는 공백으로 두어도 된다. 

 

두 번째, 'new 타입[]'을 생략하는 방법. (자주 쓴다.)

이 방법을 쓰기 위해서는 배열의 선언과 생성을 따로 하는 경우에는 생략할 수 없다는 점을 주의해야 한다. 

ex) 'new 타입[]' 생략

 int[] num = {10, 20, 30, 40, 50}; // 가능

 

ex) 배열의 선언과 생성을 따로 하는 경우

int [] num;

num = {10, ,20 30, 40, 50}   //에러. new int[] 생략 불가.

 

#배열의 출력

import java.util.Arrays;// Arrays.toString()을 사용하기 위해 추가

public class Ex5_print {

	public static void main(String[] args) {
		int[] iArr1 = new int[10];
		int[] iArr2 = new int[10];
//		int[] iArr3 = new int[] {100, 95, 80, 70, 60};
		int[] iArr3 = {100, 95, 80, 70, 60}; //'new 타입[]' 생략
		char[] chArr = {'a', 'b', 'c', 'd'};
		
		for(int i=0; i < iArr1.length; i++) {
			iArr1[i] = i+1; //1~10의 숫자를 순서대로 배열에 넣는다.
		}
		
		for(int i=0; i < iArr2.length; i++) {
			iArr2[i] = (int)(Math.random()*10) + 1; //1~10의 값을 배열에 저장
		}
		
		//배열에 저장된 값을 출력
		for(int i=0; i < iArr1.length; i++) {
			System.out.print(iArr1[i]+",");
		
		}
		System.out.println();
		
		System.out.println(Arrays.toString(iArr2));
		System.out.println(Arrays.toString(iArr3));
		System.out.println(Arrays.toString(chArr));
		System.out.println(iArr3);
		System.out.println(chArr);
	}
}

위의 코드를 보면 배열을 출력할 때 'Arrays.toString(배열이름)' 메서드를 사용했다.

이 메서드는 모든 요소들을 '[첫 번째 요소, 두 번째 요소,...]'와 같은 형식의 문자열로 만들어서 반환한다. 

만약 이 메서드를 쓰지 않고 바로 배열을 출력하면 '타입@주소'형식으로 출력된다. 

반응형