배열(Array)

 

- 배열(Array)은 같은 자료형(type)의 변수들을 순서가 있는 데이터로 저장할 수 있는 자료구조이다.

 

- 배열은 객체이기 때문에 초기화한 배열의 크기만큼 메모리 공간을 할당받는다.

 

- 인덱스(index)라고 하는 원소번호를 통해 저장된 데이터를 관리하며, 인덱스를 이용하여 배열에 있는 원소들에 접근한다.

 

- 배열의 크기를 초기화하면 수정할 수 없기 때문에 사용하지 않는 배열 공간 때문에 메모리 공간이 낭비되기도 한다.

 

- 배열의 첫 번째 인덱스 번호는 0번부터 시작한다.

 

- 배열의 원소는 변수이며, 기초형 및 참조형 모두 저장할 수 있다.

 

 

 

배열의 생성

 

- 자바에서 배열은 객체이므로 다른 객체들을 선언하는 것과 유사하다.

 

- 자바에서는 초기화된 변수로 배열의 크기를 지정할 수 있다. (C에서는 안됨)

 

- 배열의 크기는 임의로 정할 수 있으나, 선언 시 배열의 크기를 정해선 안 된다.

< 잘못된 예시 >

int matrix[5];  (X)

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

 

- 선언 후 생성 (두 가지 방법 중 편한 대로 하면 됨.)


int[] numbers; 또는 int numbers[]; //정수형 배열 선언

numbers = new int[5]; //배열 객체 생성 



- 선언과 동시에 생성 후 초기화


int[] numbers = new int[5]; //정수 타입의 데이터가 들어가며, 5개의 원소를 가지는 배열


numbers = { 10, 20, 30, 40, 50 }; 


float[] fs = new float[20]; //실수 타입의 데이터가 들어가며, 20개의 원소를 가지는 배열

char[] cs = new char[30]; //문자 타입의 데이터가 들어가며, 30개의 원소를 가지는 배열  



- 선언과 동시에 초기화 : 배열을 따로 생성하지 않아도 초기화한 데이터의 개수만큼 배열의 크기가 자동으로 정해진다. 


int[] numbers = { 10, 20, 30 };  



- 배열의 크기는 (자료형 바이트 * 원소의 개수) 이다. 5개의 원소를 가진 정수형 배열은 4byte * 5 = 20byte의 메모리 공간이 할당된 것이다.

 

 

 

for-each 루프 (향상된 for)

 

- 형식

for (자료형 변수명 : 배열이름)

{

    //반복 문장들

}

 

- 해당 배열의 인덱스 0번부터 마지막 배열 원소까지 차례대로 왼쪽 변수에 복사해서 for문을 실행한다.

 

- 예시 


int[] numbers = new int[5];

 

for(int value : numbers)

{

    System.out.println("value : " + value);

} 


 

- 결과1 (정수 타입의 데이터는 초기화하지 않으면 디폴트값으로 0이 저장된다.); 


value : 0

value : 0

value : 0

value : 0

value : 0  



- 결과2 ( numbers = { 10, 20, 30, 40, 50 };을 추가했을 때) 


value : 10

value : 20

value : 30

value : 40

value : 50 



 

 

배열의 활용


[ 위 1차원 배열, 아래 2차원 배열 ]

 

- 매개변수로 배열 원소가 전달되면 복사된 값이 호출한 메소드에서 사용된다.

 

- 매개변수로 배열 전체가 전달되면 배열도 객체이기 때문에 해당 배열의 주소를 가리키는 참조값이 전달된다.

 

- 배열의 원소가 참조형 변수일 경우, 배열의 원소에는 주소를 카리키는 참조값이 저장되어 있다. 예를 들어, 객체들의 배열일 경우 배열의 원소에는 객체가 있는 것이 아니라 객체를 가리키는 객체의 주소가 들어있는 것이다.

 

- 2차원 배열 : 같은 행의 원소들을 중괄호로 묶는다. 


int[][] numbers = new int[3][5];

numbers = { {1, 2, 3, 4, 5}, {10, 20, 30, 40, 50}, {100, 200, 300, 400, 500} }; 



또는

  


int[][] numbers = { {1, 2, 3, 4, 5}, {10, 20, 30, 40, 50}, {100, 200, 300, 400, 500} }; 


 

< int[][] numbers = new int[n][m]; 일 때

 n개의 1차원 배열이 m개의 1차원 배열을 가리키는 형태 >



- 다차원 배열 : 2차원 배열과 유사하며, 주로 회사의 매출액을 지역별 부서별 월별로 분류하는 것과 같은 상황에서 사용한다.


int[][][] numbers = new int[2][3][4]; 


 







+ Recent posts