Java/Java의 정석 읽고 정리
java의 정석 5강. 배열
Labhong
2018. 5. 27. 18:35
반응형
배열은 c++과 유사한 점이 많으니 특징과 다른 점만 짚고 넘어가도록 하겠다.
1.1 배열의 생성
배열을 생성하기 위해서는 연산자 new와 함께 배열의 타입과 크기를 지정해 주어야 한다.
int[] data;
data = new int[5];
1.2 배열의 초기화
배열은 생성과 동시에 자동적으로 자신의 타입에 해당하는 기본값으로 초기화된다.
int[] data = new int[5];
System.out.println(data[0]); // 0
변수의 타입에 따른 기본값은 다음과 같다.
자료형 |
기본값 |
boolean |
false |
char |
'\u0000' |
byte |
0 |
short |
0 |
int |
0 |
long |
0L |
float |
0.0f |
double |
0.0 or 0.0d |
참조형 변수 |
null |
배열을 초기화 하는데 두 가지 방법을 제공한다.
int[] data = {100, 90, 80, 70}; // 1번
int[] data = new int[]{100, 90, 80, 70} // 2번
두 문장이 같은 결과를 낼 때도 있지만 경우에 따라 2번과 같은 초기화가 필요하다.
아래의 코드에서 볼 수 있듯이 선언과 초기화를 따로 해야하는 경우에는 반드시 2번 방식으로 배열을 초기화해야 한다.
int[] data;
data = {100, 90, 80, 70}; // 오류 발생!!
int[] data2;
data2 = new int[4]{100, 90, 80, 70}; // okay!!
1.3 다차원 배열
2차원 배열의 선언방법은 다음과 같다.
int[][] data;
1차원 배열에서와 같이 중괄호{}를 이용해서 2차원 배열의 생성과 초기화를 동시에 할 수도 있다.
int[][] data = new int [][] {
{100, 100, 100},
{20, 20, 20},
{50, 50, 50},
{60, 30, 80},
{50, 40, 50}
}; // int[][] data = new int[5][3];으로 생성된다.
1.4 배열의 복사
배열은 한번 생성하면 그 크기를 변경할 수 없기 때문에 더 많은 저장공간이 필요하다면 보다 큰 배열로 새로 만들고 이전 배열로부터 내용을 복사해야한다.
배열을 복사하기 위해 for문을 돌리거나 System 클래스의 arraycopy를 사용하면 된다.
for문은 대충 알 것이고 arraycopy는 다음과 같이 사용하면 된다.
int[] number = {1, 2, 3, 4, 5};
int[] newNumber = new int[10];
// src: 복사할 원본 배열, dst: 복사할 배열, pos: 복사를 시작할 위치, length: src의 복사 길이
// arraycopy(src, src.pos, dst, dst.pos, length)
System.arraycopy(number, 0, newNumber, 0, number.length);
// => number[0]에서 number.length 개의 데이터를 newNumber[0]부터 복사
반응형