알고리즘 문제 풀기 및 프로젝트 서비스 설계 시 실수할 수 있는 개념이기 때문에
이에 확실히 정리하고자 합니다.
- 얕은 복사, 깊은 복사
- 원시 타입 배열
- 객체 배열
얕은 복사는 복사하려는 배열의 주솟값을 가져오게 됩니다.
이에 복사한 배열을 수정하는 경우 같은 참조값을 가진 원래 배열도 수정됩니다.
깊은 복사는 원래 배열을 가져와 새로운 배열 공간에 덮어쓰는 것입니다.
이에 복사한 배열을 수정해도 원래 배열이 수정되지 않습니다.
int, float, char와 같은 primitive type의 배열은 다음과 같은 방법으로 얕은 복사 및 깊은 복사를 수행합니다.
int[] arr = new int[5] {1,2,3,4,5};
int[] arr_2 = arr;
int[] arr = new int[5] {1,2,3,4,5};
int[] arr_2 = arr.clone();
또한 2차원 배열에서는 방법이 조금 다릅니다.
원시 타입 이외에 참조 타입 및 객체일 경우 다음과 같은 방법으로 수행합니다.
얕은 복사 : 변수 선언
깊은 복사 : A.clone(), System.arraycopy()
[Java] Java 배열 깊은 복사 & 얕은 복사 / Deep Copy & Shallow Copy / Java 객체 배열 복사
[Java] 배열의 여러가지 선언 및 초기화 방법