728x90
반응형
얕은복사(Shallow Copy)
배열의 주소 값만 복사
깊은복사(Deep Copy)
배열의 실제 값을 새로운 메모리 공간에 복사
얕은 복사
이름이 다른 새 참조를 만들고, 그 객체 모두 동일한 메모리 위치를 가르킵니다.
따라서 복사에서 값을 변경하면 다른 참조에도 영향을 미칩니다. 즉, 복사한 배열을 수정 시, 원 배열도 함께 수정됩니다.
깊은 복사
새 객체를 만들고 이전 객체 값을 새 객체에 복사하기 때문에, 별도의 값이 존재합니다.
따라서 깊은 복사를 하는 경우, 복사한 객체의 값을 변경해도 처음 객체의 영향을 미치지 않습니다.
자바에서는 clone() 이라는 메소드를 통해 깊은 복사를 내부적으로 수행하고 새 객체를 반환합니다.
*깊은 복사 구현 방법 *
- 모든 깊이에 있는 객체까지 복사하는 재귀 함수를 구현하는 방법. 직접 코드를 구현해야 한다는 단점이 있다.
- JSON을 사용하는 방법. 단 타입이 변경되거나 모든 데이터가 복사되는 등의 문제가 있습니다.
- lodash의 cloneDeep() 사용하는 방법. 직접 코드를 구현하지 않아도 되지만 lodash 패키지가 설치되어야 합니다.
반응형
'JAVA_기초 공부' 카테고리의 다른 글
[JAVA] Enum 으로 Singleton만들기 (0) | 2023.02.17 |
---|---|
[JAVA] try-catch-finally / try with resources (0) | 2023.02.17 |
[JAVA] Override / Overloading (0) | 2023.02.15 |
[JAVA] Getter/Setter (0) | 2023.02.15 |
[JAVA] 자바의 변수/함수 (0) | 2023.02.15 |