arr2의 값을 수정하면 arr1에 영향
배열의 참조(주솟값)만 복사한 것으로 arr1, arr2 모두 하나의 참조를 가리킴
int arr1[] = {1, 2, 3, 4, 5};
int arr2[] = arr1;
배열을 그대로 가져와 새로운 배열을 만들어, 각각 수정해도 영향 없음
자바의 모든 부모 클래스인 Object 클래스에 구현되어있는 clone()메서드 사용
int arr1[] = {1, 2, 3, 4, 5};
int arr2[] = arr1.clone();
System.arraycopy(원본 배열, 복사시작위치, 복사할 배열, 붙여넣기 시작위치, 복사할 길이
);
int arr1[] = {1, 2, 3, 4, 5};
int arr2[] = new int[3];
int arr3[] = {99, 98, 97, 96, 95};
System.arraycopy(arr1, 1, arr2, 0, 2); // int arr2[] = {2, 3};
System.arraycopy(arr1, 1, arr3, 2, 3); // int arr3[] = {99, 98, 2, 3, 4};
Arrays.copyOf(원본 배열, 복사할 길이);
Arrays.copyOfRange(원본 배열, 시작위치, 복사할 길이_끝낼 위치+1);
int arr1[] = {1, 2, 3, 4, 5};
int arr2[] = Arrays.copyOf(arr1,5); // int arr2[] = {1, 2, 3, 4, 5};
int arr3[] = Arrays.copyOfRange(arr1,0,3); // int arr3[] = {1, 2, 3};
int arr4[] = Arrays.copyOfRange(arr1,0,7); // int arr4[] = {1, 2, 3, 4, 5, 0, 0};
Object.clone()
으로 2차원 배열을 복사할 수는 있지만 얕은 복사가 되기 때문에 주의!int arr1[][] = {{1,2,3},{4,5,6},{7,8,9}};
int arr2[][] = new int[arr1.length][arr1[0].length];
for(int i=0; i<arr2.length; i++){
System.arraycopy(arr1[i], 0, arr2[i], 0, arr1[0].length);
}
참고 사이트 :
https://seeminglyjs.tistory.com/215
https://romcanrom.tistory.com/48
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=gglee0127&logNo=221353415984