Java

얕은 복사 & 깊은 복사

hongdangmoo 2023. 1. 3. 20:04

객체를 복사할 때 얕은 복사와 깊은 복사가 있다.

 

◎ 얕은 복사

-> 객체의 참조 값을 복사하는 것이다. 복사된 대상은 원본과 같은 주소값을 할당받는다. 즉, 원본과 복사본이 가리키는 객체가 같다. 따라서 원본 객체의 필드를 수정하면 복사한 객체의 필드도 같이 수정된다.

public void ShallowCopy(Test test){
	Test newTest = test;
}

얕은 복사

 

◎ 깊은 복사

-> 내용이 동일하지만 참조값이 다른 새로운 객체를 생성하는 것이다. 복제된 객체는 원본 객체의 필드 변겨에 영향을 받지 않는다. 즉, 원본 객체와 복제된 객체는 서로 다른 객체다.

 

public void DeepCopy(Test test){
	Test newTest = new Test(test.get~(), ...);
}

깊은 복사