광형 2022. 3. 27. 19:16
728x90
728x90
SMALL

배열복사에는 2가지가 있습니다.

 

  배열 복사
1. 얕은 복사 : 배열의 주소값만 복사합니다. (같은 객체를 참조합니다.)
2. 깊은 복사 : 새로운 배열을 만들고 기존 배열에 있는 데이터를 복사합니다.

1. 얕은 복사

 

  얕은 복사는 배열을 만들 때 주소값을 참조합니다. 즉, int [] copy =origin을 하면 다음 표와 같이 arr2가 arr1의 배열이 참조하고 있는 heap영역의 주소값만 참조한다는 뜻입니다.

그렇다면 과연 arr1에서 값이 바뀌면 arr2도 값이 바뀔까요? 정답은 주소참조라서 그렇다입니다.

2. 깊은 복사

 

즉 주소 참조가 아닌 각각의 인덱스를 for문을 통해서 넣어줍니다. copyp[i]= origin[i]

그렇다면 다음과 같은 깊은 복사는 주소가 아닌 하나의 heap영역에 배열 자체가 복사되는것이기에 arr1이 수정되면 arr2가 수정되지 않습니다.

다음시간에는 깊은 복사에 대해서 Arrays.copyOf, arraycopy(), .clone 메소드를 이용한 깊은 복사에 대해서 얘기해보겠습니다.

728x90
300x250
LIST