Java
[Java기초] 배열- 길이 변경하기
김도유
2022. 9. 2. 00:53
자바에서는 '배열이름.length'를 통해 배열의 길이를 알 수 있다.
배열은 한번 생성시 길이를 변경할 수 없다.
하지만, 배열에 저장 공간이 부족한 경우에는 어떻게 할까?
=> 1. 더 큰 저장공간의 배열 생성 -> 2. 기존 배열의 저장 값들을 새 배열에 복사
1. for문으로 배열 복사
//for문으로 배열 복사
int[] score = new int[5];
int[] tmp = new int[score.lenght*2] //기존 배열보다 길이가 2배인 배열 생성
for(int i = 0; score.length; i++)
tmp[i] = score[i]; //score[i]값을 tmp[i]에 저장(복사)
score = tmp; //참조변수 score에 참조변수 tmp의 값을 저장. score은 배열 tmp를 가르키게 됨
참조변수 score와 tmp는 같은 배열을 가리키게 되는 것이다.
즉, 배열 score와 배열 tmp는 이름만 다를 뿐 동일한 배열이다.그 전 score가 가리키던 배열은 더 이상 사용불가.
왜냐하면, 배열은 참조변수를 통해서만 접근하기에 참조변수가 없는 배열은 사용할 수 없다.
2. System.arraycopy()로 배열 복사
//System.arraycopy()로 배열복사
System.arraycopy(num, 0, newNum, 0, num.length);
//num[0]에서 newNum[0]으로 num.length개의 데이터 복사
for문 대신 System.arraycopy()를 이용하면 간단하고 빠르게 배열을 복사 가능하다.
차이점 : for문- 배열 요소 하나하나에 접근해서 복사
arraycopy()- 지정된 범위 값들을 한 번에 통째로 복사