728x90
반응형
얕은 복사(shallow copy)
- 객체가 참조하고 있는 객체의 주소만 복사하는 것이다.
원본과 복제본이 같은 객체를 공유하며 이때 같은 객체는 메모리의 힙(heap)주소이다.
- 원본 변경시 복제본도 영향을 받는다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | package zon; public class Copy { public static void main(String[] args) { int[] a = new int[2]; a[0] = 2; a[1] = 4; int[] b = a; b[0] = 6; b[1] = 8; System.out.println(a[0]+", "+a[1]); System.out.println(b[0]+", "+b[1]); } } | cs |
'b' 배열은 'a'배열의 참조를 가리키고 있다. 따라서 'b' 배열의 값을 변경하면 'a' 배열도 함께 변경된다.
즉, 참조 타입 데이터가 저장한 메모리 주소 값을 복사하는 것이다.
깊은 복사(deep copy)
- 객체가 참조하고 있는 객체까지 복사하는 것이다.
- 원본과 복사본이 서로 다른 객체를 참조하므로 원본의 변경이 복사본에 영향을 주지 않는다.
728x90
반응형
댓글