인프런 커뮤니티 질문&답변

재영님의 프로필 이미지

작성한 질문수

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

6. 장난꾸러기

Object 클래스의 clone() 메서드 질문

작성

·

233

0

Object 클래스의 clone() 메서드는 깊은 복사가 아니라 얕은 복사로 알고 있습니다.

강의에서의 선생님의 말씀대로 clone() 메서드는 깊은 복사가 맞나요?

답변 2

0

배열 arr1이 있을때

얕은 복사

1. arr2 = arr1;

2. arr2 = arr2.clone(); -> 기본타입배열이면 깊은복사, 참조타입배열이면 얕은복사.

깊은 복사

arr2 = Arrays.copyOf(arr1, arr1.length);
인 것 같습니다!!

0

김태원님의 프로필 이미지
김태원
지식공유자

안녕하세요^^

저는 clone() 메서드가 깊은복사의 대표메서드로 알고있습니다. 실제 아래코드를 실행하면 arr 배열은 원본 그대로 있고 tmp만 정렬되는 것을 볼 수 있습니다.

int[] tmp=arr.clone();
Arrays.sort(tmp);
for(int i=0; i<n; i++){
	System.out.print(arr[i] + " ");
}

 

아래 블로그에도 clone()은 깊은 복사로 정리되어 있네요.

https://velog.io/@bokiri409/%EB%AC%B8%EB%B2%95%EC%9E%90%EB%B0%94JAVA-%EB%B0%B0%EC%97%B4%EC%9D%98-%EA%B9%8A%EC%9D%80-%EB%B3%B5%EC%82%ACDeep-Copy-%EC%96%95%EC%9D%80-%EB%B3%B5%EC%82%ACShallow-Copy

재영님의 프로필 이미지
재영
질문자

친절한 답변 감사합니다!

재영님의 프로필 이미지

작성한 질문수

질문하기