자바의정석 Chapter5. 배열


배열이란

같은 타입의 여러 변수를 하나의 묶음으로 다루는 것입니다.

배열의 선언과 생성

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

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

배열의 길이와 인덱스

  • 배열의 길이는 값을 저장할 수 있는 공간의 개수 입니다.
  • 배열의 길이는 int 범위의 양의 정수(0도 포함) 이어야 합니다.
  • 한번 정의된 배열의 길이는 변경 할 수 없습니다. 만약 변경을 하고자 할 경우 아래와 같은 방법이 있습니다.
    1. 더 큰 배열을 새로 생성한다.
    2. 기존 배열의 내용을 새로운 배열에 복사합니다.
  • 생성된 배열의 각 저장공간을 배열의 요소라고 하며 배열이름[인덱스] 형식으로 배열의 요소에 접근 합니다.
  • 배열의 인덱스는 배열의 요소마다 붙여진 일련번호로 범위는 0부터 배열길이 -1 까지 입니다.

배열의 초기화

선언과 동시에 생성하는 것을 초기화라고 합니다.

[ 번째 방법]
타입[] 변수이름 = new 타입[길이] // 배열 선언과 생성을 동시에

변수이름[0] = 1;		// 각 인덱스에 직접 값 저장
변수이름[1] = 2;
...

[ 번째 방법]
타입[] 변수이름 = new int[] {1,2,...}; 
타입[] 변수이름 = {1,2,3,...};		 // 위에서 new int[] 부분은  생략할 수 있습니다. 

배열의 복사

배열은 한번 생성하면 그 길이를 변경 할 수 없기 때문에 더 큰 공간이 필요할 경우 새로운 배열을 생성 해야 하며 2가지 방법이 있습니다.

  1. for문을 이용한 복사
int[] arr = new int[3];
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;

int[] arrCopy = new int[arr.length*2];  // 기존 배열보다 길이가 2배인 배열 생성
for(int i = 0 ; i < arr.length; i++ ){
	tmp[i] = arr[i];
}	
  1. System.arraycopy(num, 0, newNum, 0, num.length)
    • for문보다 효율적입니다.

다차원 배열

2차원 이상의 배열을 의미합니다.

2차원 배열의 선언과 인덱스

1차원배열에서 괄호가 하나 더 추가된 것입니다.

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

2차원 배열의 초기화

int[][] arr = new int[][]  { {1,2,3}, {4,5,6} };
int[][] arr = { {1,2,3}, {4,5,6} }; // 위의  new int[][] 생략 가능

2차원 배열의 길이

행의 길이는 변수이름.length 를 이용하며 열의 길이는 변수이름[행의 인덱스].length 를 사용합니다.

가변 배열

2차원 이상의 다차원 배열을 생성할 때 전체 배열 차수 중 마지막 차수의 길이를 지정하지 않고, 추후에 각기 다른 길이의 배열을 생성함으로써 고정된 형태가 아닌 보다 유동적인 가변 배열을 구성할 수 있습니다.

[ 번쨰 방법]
int[][] score1 = new int[3][]; // 두 번째 차원의 길이는 지정하지 않음.
score1[0] = new int[1];
score2[1] = new int[2];
score3[2] = new int[3];

[ 번쨰 방법]
int[][] score2 = {
			  {1}
			, {2,3}
			, {4,5,6}
		};	

Reference

자바의 정석

태그:

카테고리:

업데이트:

댓글남기기