728x90
📌 Arrays.copyOf()
- Arrays.copyOf(원본배열, 복사할길이);
- Arrays.copyOfRange(A, form_index, to_index)
- int[] A : 복사할 배열
- int from_index : 복사할 배열의 시작 index
- int to_index : 복사할 배열의 끝 index
- 복사할 끝 index 값은 포함 안됨
- import java.util.Arrays; 필요
- Arrays.copyOf()는 System.arraycopy()를 래핑한 함수
- Arrays.copyOf() 는 System.arraycopy()가 구현하는 것 외에 추가 기능 제공
- System.arraycopy()는 단순히 소스배열에서 대상으로 값을 복사하지만 Arrays.copyOf()는 새 배열도 만들 수 있고 필요한 경우 내용을 자르거나 채울 수 있음
import java.util.Arrays;
// arr1 배열에서 0번째부터 3개의 값 복사
Array.copyOf(arr1, 3);
// arr1 배열에서 2번째부터 4번째까지 값 복사 (4번째 값 포함 안됨)
Array.copyOfRange(arr1, 2, 4);
import java.util.Arrays;
class prac{
public static void main(String[] args){
int[] arr1 = {1,2,3,4,5, 6, 7, 8, 9, 0};
int[] arr2 = Arrays.copyOf(arr1, 3);
int[] arr3 = Arrays.copyOfRange(arr1, 2, 7);
System.out.println(Arrays.toString(arr1)); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
System.out.println(Arrays.toString(arr2)); // [1, 2, 3]
System.out.println(Arrays.toString(arr3)); // [3, 4, 5, 6, 7]
}
}
📌 System.arraycopy()
- System.arraycopy(src, srcPos, dest, destPos, length);
- Object src : 복사할 객체, 원본 배열
- int srcPos : 복사 시작할 index
- Object dest : 복사된 배열
- int destPos : 원본으로부터 가져온 데이터를 복사된 배열의 몇 번째부터 추가할지
- int length : 카피되는 배열 요소 개수
- native 메서드로 되어있어 속도가 빠름
// arr1 배열에서 0번째부터 3개 값을 arr2 배열의 2번째부터 추가하겠다는 의미
System.arraycopy(arr1, 0, arr2, 2, 3);
예제
import java.util.Arrays;
class prac {
public static void main(String[] args){
int[] arr1 = {1,2,3,4,5,6};
int[] arr2 = new int[6];
System.arraycopy(arr1, 0, arr2, 2, 3);
System.out.println(Arrays.toString(arr2)); // [0, 0, 1, 2, 3, 0]
}
}
정리
Arrays.copyOf()가 System.arraycopy() 보다 더 직관적
Arrays.copyOf()는 System.arraycopy() 와 달리 새 배열도 생성 가능
전체 길이를 전부 복사하거나, 복사 대상의 객체를 유지하지 않아도 된다면 Arrays.copyOf() 를 사용할 것
복사하는 길이를 명시하거나 객체를 유지해야한다면 System.arraycopy()를 사용 할 것
기본의 배열의 일부만 덮어쓰이기 또는 clone()보다 더 빠르길 원할 때는 System.arraycopy()를 쓸 것
728x90
'[자바] > 자바 문법' 카테고리의 다른 글
[Java] length, length(), size() (0) | 2021.11.01 |
---|---|
[Java] String 클래스의 메서드 replace 와 replaceall 메서드 차이 (0) | 2021.11.01 |
[Java] Vector 와 ArrayList 차이 (0) | 2021.10.24 |
[Java] return (0) | 2021.10.23 |
[Java] 메모리 구조 (static, stack, heap) (0) | 2021.10.22 |