배열을 복사하는 방법은 두가지가 있다.
1. for문을 이용해서 배열을 복사
public static void main(String[] args) {
int []arr = new int[5];
for(int i = 0; i<arr.length; i++) {
arr[i] = i+1;
}
System.out.println("[변경전]");
System.out.println("arr.length:" + arr.length);
for(int i = 0; i<arr.length; i++) {
System.out.println("arr["+i+"]:" + arr[i]);
}
int [] tmp = new int[arr.length*2];
for(int i = 0; i<arr.length; i++) {
tmp[i] = arr[i];
}
arr = tmp;
System.out.println("[변경후]");
System.out.println("arr.length:" + arr.length);
for(int i = 0; i<arr.length; i++) {
System.out.println("arr["+i+"]:" + arr[i]);
}
}
2. System.arraycopy()를 이용한 배열의 복사
for문 복사 차이점 : for문은 배열의 요소 하나하나에 접근해서 복사하지만, arraycopy()는 지정된 범위의 값들을 한 번에 통째로 복사한다. 각 요소들이 연속적으로 저장되어 있다는 배열의 특성때문에 이렇게 처리하는 것이 가능한 것이다.
즉, 배열의 복사는 for문보다 System.arraycopy()를 사용하는 것이 효율적이다.
public static void main(String[] args) {
char[] abc = {'A', 'B', 'C', 'D'};
char[] num = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
System.out.println(abc);
System.out.println(num);
char[] result = new char[abc.length+num.length];
System.arraycopy(abc, 0, result, 0, abc.length);
System.arraycopy(num, 0, result, abc.length, num.length);
System.out.println(result);
System.arraycopy(abc, 0, num, 0, abc.length);
System.out.println(num);
System.arraycopy(abc, 0, num, 6, 3);
System.out.println(num);
}
ex)
System.arraycopy(num, 0, newNum, 0, num.length);
num[0]에서 newNum[0]으로 num.length개의 데이터 복사
'JAVA개념' 카테고리의 다른 글
next()와 nextLine() 차이 (0) | 2021.11.28 |
---|---|
배열 활용 (0) | 2021.11.28 |
변수의 타입 (0) | 2021.11.23 |
변수란? (0) | 2021.11.23 |
자바언어의 특징(자바의 정석) (0) | 2021.11.23 |