-배열은 한 번 생성하면 크기를 변경할 수 없다.
-더 많은 저장 공간이 필요하다면?
보다 큰 배열을 새로 만들고 이전 배열로부터 값들을 복사해야 한다.
예를들어 길이가 2인 배열이 있다.
x | y |
여기서 z를 추가로 넣고 싶을 땐
세 칸짜리 배열을 만들고
위의 배열 을 복사 한 후,
x | y |
z를 집어넣는다
x | y | z |
배열 간의 항목 값을들 복사하는 방법 세 가지
1. for문 이용
2. System.arraycopy() 메소드
3. Arrays 클래스 이용 (기본API클래스에서 설명)
1. for문으로 배열 복사
package sec06.exam07_array_copy;
public class ArrayCopyByForExample {
public static void main(String[] args) {
int[] oldIntArray = {1,2,3};
int[] newIntArray = new int[5];
//for문을 사용한 배열 복사
for(int i=0; i<oldIntArray.length; i++) {
newIntArray[i] = oldIntArray[i];
}
//newIntArray출력 메소드
for(int i=0; i<newIntArray.length; i++) {
System.out.print(newIntArray[i] + ", ");
}
}
}
실행결과:
1, 2, 3, 0, 0,
2. System.arraycopy() 메소드를 이용한 복사
System.arraycopy(원본배열, 원본배열 시작인덱스, 새 배열, 새 배열 시작인덱스, 복사갯수);
만약 세 개짜리 배열 arr1이 있고
1 | 2 | 3 |
arr1을 다섯 개 짜리 arr2로 복사 하고 싶다면
1 | 2 | 3 |
이렇게 적어주자. ↓
System.arraycopy(arr1, 0, arr2, 0, 3);
package sec06.exam07_array_copy;
public class ArrayCopyExample {
public static void main(String[] args) {
String[] oldStrArray = {"java", "array", "copy"};
String[] newStrArray = new String[5];
//배열복사 메소드
System.arraycopy(oldStrArray, 0, newStrArray, 0, oldStrArray.length);
//출력 메소드
for(int i=0; i<newStrArray.length; i++) {
System.out.print(newStrArray[i] + ", ");
}
}
}
실행결과:
java, array, copy, null, null,