배열 복사

얕은 복사 (shallow copy)
  • 주소값만 복사해서 같은 Heap 객체를 참조하게 되는 방식
int[] arr1 = new int[3]; 
int[] arr2 = arr1; 
// 같은 주소를 참조 (공유됨)

 

⚠️ 둘 중 하나를 변경하면 서로에게 영향 미침


 

깊은 복사 (deep copy)
  • 새로운 배열 생성 후 데이터를 복사해서 서로 독립된 배열로 만드는 방식
// 1. for문 
for (int i = 0; i < arr1.length; i++) { 
arr2[i] = arr1[i]; } 

// 2. System.arraycopy 
System.arraycopy(arr1, 0, arr2, 0, arr1.length); 

// 3. Arrays.copyOf 
int[] arr2 = Arrays.copyOf(arr1, arr1.length); 

// 4. clone() 
int[] arr2 = arr1.clone();
 
⚠️ 유의할 점
  • 얕은 복사와 깊은 복사의 차이를 실습하면서 감각적으로 익히는 것이 중요
  • 특히 객체 배열일 경우, 깊은 복사를 안 하면 예상치 못한 오류 발생 가능

 

+ Recent posts