Java/java

java :) System.arraycopy(), 매개변수가 5개가 들어가?(원본배열, 원본의복사시작점, 복사받을 배열, 복사받을 시작점, 복사받을 끝점)

euncheol kim 2022. 5. 9. 21:02

 

 

goal

System.arraycopy를 이해하고 사용법을 안다.

 

 

* System.arraycopy()


사용방법


참고자료 : [Java] System.arraycopy 사용법, https://eunplay.tistory.com/118, 어제, 오늘 그리고 내일

 

image

 

  • SystemArraycopy.java
import java.util.Arrays;

public class SystemArraycopy {
    public static void main(String[] args) {
        int[] arr = new int[] {10,20,30,40,50};
        int[] sys = new int[arr.length];
        System.arraycopy(arr, 0, sys, 0, arr.length);

        System.out.println("* 변수가 가리키는 메모리 : " + arr + " " + sys);
        System.out.println("\n");
        System.out.println("1. deep_copy(sys)만 진행");
        System.out.println("----------------------------------------");
        System.out.println("arr의 요소 : " + Arrays.toString(arr));
        System.out.println("deep_copy의 요소 : " + Arrays.toString(sys));

        sys[0] = 100;

        System.out.println("\n\n\n");
        System.out.println("2. deep_copy(sys)가 진행된 배열의 값 변경 (arr의 값이 변경되도 아래 결과는 동일하다.)");
        System.out.println("----------------------------------------");
        System.out.println("arr의 요소 : " + Arrays.toString(arr));
        System.out.println("deep_copy의 요소 : " + Arrays.toString(sys));
    }
}
  • SystemArraycopy.java [결과값]

image

 

 

추가설명

  • System.arraycopy()를 굳이 복사의 종류로 나누었을 때, 깊은 복사(deep-copy)에 속한다.