강의

멘토링

커뮤니티

Inflearn Community Q&A

qkdwo46138774's profile image
qkdwo46138774

asked

Introduction to Java Algorithm Problem Solving: Coding Test Preparation

6. Rascal

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

Written on

·

329

0

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

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

java코딩-테스트

Answer 2

0

배열 arr1이 있을때

얕은 복사

1. arr2 = arr1;

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

깊은 복사

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

0

codingcamp님의 프로필 이미지
codingcamp
Instructor

안녕하세요^^

저는 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

qkdwo46138774님의 프로필 이미지
qkdwo46138774
Questioner

친절한 답변 감사합니다!

qkdwo46138774's profile image
qkdwo46138774

asked

Ask a question