배열 복사하기
얕은 복사를 사용할 경우, 원본 배열과 복사된 배열이 같은 객체를 참조하게 되므로, 복사된 배열을 수정하면 원본 배열도 수정되게 됩니다.
상황에 따라서 깊은 복사를 사용하여 복사된 배열을 수정해도 원본 배열이 수정되지 않도록 해야 하며 크게 다음과 같은 3가지 방법을 사용합니다.
- System.arraycopy()를 이용한 복사
- Arrays.copyOf()를 이용한 복사
- clone()을 이용한 복사
1. System.arraycopy()를 이용한 복사
System.arraycopy() 메소드는 배열을 복사하는 가장 기본적인 방법입니다. 이 메소드는 다음과 같은 형태로 사용됩니다.
System.arraycopy(원본배열, 원본배열의 시작 인덱스, 복사할 배열, 복사할 배열의 시작 인덱스, 복사할 길이);
예를 들어, 다음과 같이 사용할 수 있습니다.
int[] arr1 = {1, 2, 3, 4, 5};
int[] arr2 = new int[5];
System.arraycopy(arr1, 0, arr2, 0, arr1.length);
위 코드는 arr1
배열의 0번 인덱스부터 4번 인덱스까지의 값을 arr2
배열의 0번 인덱스부터 복사하는 코드입니다.
다음과 같이 인덱스와 길이를 임의로 설정하여 배열의 일부분만 복사할 수 있습니다.
int[] arr1 = {1, 2, 3, 4, 5};
int[] arr2 = new int[5];
System.arraycopy(arr1, 1, arr2, 2, 3);
// arr2 = {0, 0, 2, 3, 4}
2. Arrays.copyOf()를 이용한 복사
Arrays.copyOf() 메소드는 배열을 복사하는 또 다른 방법입니다. 이 메소드는 다음과 같은 형태로 사용됩니다.
Arrays.copyOf(원본배열, 복사할 길이);
예를 들어, 다음과 같이 사용할 수 있습니다.
int[] arr1 = {1, 2, 3, 4, 5};
int[] arr2 = Arrays.copyOf(arr1, arr1.length);
위 코드는 arr1
배열의 0번 인덱스부터 4번 인덱스까지의 값을 복사하여 arr2
배열을 생성하는 코드입니다.
3. clone()을 이용한 복사
clone() 메소드는 배열을 복사하는 또 다른 방법입니다. 이 메소드는 다음과 같은 형태로 사용됩니다.
원본배열.clone();
예를 들어, 다음과 같이 사용할 수 있습니다.
int[] arr1 = {1, 2, 3, 4, 5};
int[] arr2 = arr1.clone();
위 코드는 arr1
배열의 0번 인덱스부터 4번 인덱스까지의 값을 복사하여 arr2
배열을 생성하는 코드입니다.
Leave a comment