자바에서 배열을 복사할 때, for문을 사용해 일일이 복사해도 되지만, System.arraycopy()를 사용하면 보다 간단하고 빠르게 배열을 복사할 수 있다.
for문은 배열의 요소 하나하나에 접근해서 복사하지만, arraycopy()는 지정된 범위의 값들을 한 번에 통째로 복사한다. 각 요소들이 연속적으로 저장되어 있다는 배열의 특성 때문에 이렇게 처리하는 것이 가능한 것이다.
-> 배열의 복사는 for문보다 System.arraycopy()를 사용하는 것이 효율적이다.
for문을통한 배열의 복사를 arraycopy()로 바꾸면 다음과 같다.
//for문
for(int i = 0; i < num.length; i++) { newNum[i] = num[i]; }
//arraycopy()
System.arraycopy(num, 0, newNum, 0, num.length);
arraycopy()를 호출할 때는 어느 배열(1)의 몇 번째 요소(2)에서 어느 배열(3)의 몇 번째 요소(4)로 몇 개의 값(5)을 복사할 것인지 지정해줘야 하는데, 다음과 같이 생각하면 이해가 쉽다.
이 때, 복사하려는 배열의 위치가 적절하지 못하여 복사하려는 내용보다 여유 공간이 적으면 ArrayIndexOutOfBoundException 에러가 발생한다.
'java > java' 카테고리의 다른 글
[Java] Java 환경 변수 설정 - MacOS (0) | 2021.06.29 |
---|---|
[Java] 연산자 (2) | 2021.06.23 |
[Java] 배열의 출력 (0) | 2021.06.23 |
[Java] 자바 데이터 타입, 변수 그리고 배열 (1) | 2021.06.22 |
[Java] javac - error: error while writing 오류 (0) | 2021.06.12 |