본문 바로가기
카테고리 없음

자바(JAVA) - 얕은 복사(shallow copy)와 깊은 복사(deep copy)

by 환풍 2023. 7. 10.
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
반응형

댓글