배열의 복사

✒️ 2025-05-27 10:21 내용 수정


1. 얕은 복사(Shallow Copy)

int[] a = {1, 2, 3, 4};
int[] b = a;
// a와 b가 보는 배열이 동일한 배열

2. 깊은 복사(Deep Copy)

1) for 문을 써서 일일이 배열 요소를 복사

int[] a = {1, 2, 3, 4};
int[] b = new int[4];

for (int i = 0; i < a.length; i++) {
	b[i] = a[i];
}

2) System 클래스의 arraycopy();

int[] a = {1, 2, 3, 4};
int[] b = new int[4];
System.arraycopy(a, 0, b, 0, a.length);
// 복사할 배열의 길이와 위치를 쉽게 설정할 수 있다

3) Array 클래스의 copyOf();

int[] a = {1, 2, 3, 4};
int[] b = Arrays.copyOf(a, a.length);
// Arrays.copyOfRange(a, start_index, end_index); 로 범위설정도 가능하다

4) Object 클래스의 clone();

int[] a = {1, 2, 3, 4};
int[] b = a.clone();
// 얇은 복사와는 다른 a의 동일한 복제본 b가 생긴다
// a와 b의 행렬 주소는 다르다