개요
Arrays 클래스에서는 배열을 복사할 수 있는 메서드를 지원한다.
- Arrays.copyOf()
- Arrays.copyOfRange()
- System.arraycopy()
Arrays.copyOf()
Arrays.copyOf(원본 배열,복사할 길이)
- 복사하고자 하는 배열을 인덱스 0부터 원하는 길이만큼 복사한다.
- 입력한 길이 > 원본 배열 : 원본 배열에서 존재하지 않는 값은 배열의 기본 값으로 초기화되어 복사된다.
import java.util.Arrays;
// arr 배열에서 0번째부터 3개의 값 복사
Array.copyOf(arr, 3);
Arrays.copyOfRange()
Arrays.copyOfRange(원본 배열,복사 시작할 인덱스,복사 끝낼 인덱스)
- 복사하고자 하는 배열의 인덱스 범위를 지정하여 복사한다.
- 입력한 길이 > 원본 배열 : 원본 배열에서 존재하지 않는 값은 배열의 기본 값으로 초기화되어 복사된다.
import java.util.Arrays;
// arr1 배열에서 2번째부터 4번째까지 값 복사 (4번째 값 포함 안됨)
Array.copyOfRange(arr1, 2, 4);
System.arraycopy
System.arraycopy(원본 배열,복사 시작할 인덱스,복사된 배열,복사된 배열의 시작 인덱스,배열 요소 개수)
- 복사하고자 하는 배열의 인덱스 범위를 지정하여 복사한다.
- 입력한 길이 > 원본 배열 : 원본 배열에서 존재하지 않는 값은 배열의 기본 값으로 초기화되어 복사된다.
import java.util.Arrays;
// arr1 배열에서 0번째부터 3개 값을 arr2 배열의 2번째부터 추가
System.arraycopy(arr1, 0, arr2, 2, 3);
System.arraycopy vs Arrays.copyOf
Arrays.copyOf는 System.arraycopy를 래핑한 함수로 사실상 동일한 함수이다.(속도는 Arrays.copyOf가 약 2배 정도 빠름)
- System.arraycopy() : 단순히 소스배열에서 대상으로 값을 복사. 복사하는 길이를 명시해야하거나, 객체를 유지해야할 때 사용
- Arrays.copyOf() : 새 배열도 만들 수 있고 필요한 경우 내용을 자르거나 채울 수 있음. 전체 길이를 전부 복사하거나, 복사 대상의 객체를 유지하지 않아도 될 때 사용
'Language > Java' 카테고리의 다른 글
[Generic] <T extends class> (0) | 2022.07.14 |
---|---|
String 비교 (0) | 2022.07.11 |
Method overriding_객체 생성 (0) | 2022.07.11 |