[Java] 배열의 얕은 복사, 깊은 복사

예원·2023년 3월 4일
0

Java 글 모아보기

목록 보기
5/6

자바에서 배열 복사에는 얕은 복사(Shallow Copy), 깊은 복사(Deep Copy)가 있다.

얕은 복사(Shallow Copy)

복사한 배열이 기존 배열과 같은 주소 값을 갖게 되는 것이다.

복사한 배열의 값을 변경하면, 기존 배열도 변경되게 된다.

int[] a = {1,2,3,4,5};
int[] b = a;  // 얕은 복사

깊은 복사(Deep Copy)

기존 배열은 새 배열에 덮어 써, 기존 배열과 다른 주소 값을 갖게 되는 것이다.

새 배열의 값을 변경하여도, 기존 배열에 영향을 주지 않는다.

int[] a = {1,2,3,4,5};
int[] b = a.clone();  // 깊은 복사 - 방법1
import java.util.Arrays;

Integer[] a = {1,2,3,4,5};
Integer[] b = Arrays.copyOf(a, a.length);  // 깊은 복사 - 방법2
Integer[] a = {1,2,3,4,5};
// 깊은 복사 - 방법3
Integer[] b = new Integer[a];
for (int i=0; i<n; i++) {
  b[i] = a[i];
}

참고

0개의 댓글