[JAVA] System.arraycopy() 사용법

Yuri Lee·2024년 4월 23일
0

JAVA

목록 보기
11/12

자바에서 배열을 복사할때 사용할 수 있는 두 가지 메서드가 있다.

System.arraycopy()

System.arraycopy(원본배열, 원본 배열의 복사 시작 지점, 복사할 배열, 복사할 배열의 복사 시작 지점, 복사할 요소의 개수)

System.arraycopy(arrList, 0, copyList, 0, copyList.length);
//0으로 하면 리스트 처음부터 복사

Array.copyOf()

Arrays.copyOf(원본배열, 원본 배열에서 복사해올 길이)

Arrays.copyOf(arrList, 7)

두 메서드의 차이점

int[] arrList = {1,2,3,4,5,6,7,8,9,10}
int[] copyList  new int[15];

System.arraycopy() 적용 시

System.arraycopy(arrList,0,copyList,1,10)
System.out.println(Arrays.toString(copyList)); 
// [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0, 0, 0, 0]

Array.copyOf() 적용 시

int[] copyList = Arrays.copyOf(arrList, 15);
System.out.println(Arrays.toString(copyList)); 
// [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0, 0, 0, 0, 0]

int[] copyList = Arrays.copyOf(arrList, 7);
System.out.println(Arrays.toString(copyList)); 
// [1, 2, 3, 4, 5, 6, 7]

arr로부터 15만큼을 복사해오고, 7만큼 복사해와봤다. 위치 지정 이런 것없이 첫번째 요소부터 지정한 길이만큼 가져온 것이 보인다.

둘의 차이

  • Arrays.copyOf : 새로운 배열 생성 가능, 전부 복사하거나 복사 대상의 객체를 유지시킬 필요가 없을 때 사용 추천.
  • System.arraycopy() : 복사 길이를 명시해야 하거나, 객체를 유지하고자 할 때 사용 추천.
  • 스택오버플로우 여기 답변들을 보면 Arrays.copyOf가 2배가량 빠르다고 한다.

REFERENCES

profile
개발자 이유리

0개의 댓글