[JAVA] 배열 복사

2023. 5. 9. 17:48Languages/JAVA

💬 기억하고 싶거나 공부한 내용을 기록중입니다 :)
 
1️⃣ 배열 복사
- 필요성 : 배열은 생성 후 크기를 바꿀 수 없기 때문에,  더 큰 배열을 생성 후 기존 배열을 새로 만든 배열로 복사하게 된다.
- 종류 (*편의상 기존 배열은 oldA, 새로운 배열은 copyB라고 가정)
  1. 얕은 복사 (shallow copy) : 주소(객체의 번지)를 복사하며, 동일 주소지를 참조하게 된다.
     - 예시
        int[] oldA = new int[]{1,2,3,4,5};
        int[] copyB = new int[old A];
  2. 깊은 복사 (deep copy) : 새로운 메모리 공간을 확보한 뒤, 기존 배열의 값을 공간에 복사한다.
     1) for문;
     - 예시
        int[] oldA = new int[]{1,2,3,4,5};
        for(int i=0;i<oldA.length;i++) {
              copyB[i]=oldA[i];
         }
     2) object.clone();
     - 예시
        int[] oldA = new int[]{1,2,3,4,5};
        copyB = oldA.clone();
     3) Arrays.copyOf();
    - 예시
        int[] oldA = new int[]{1,2,3,4,5};
         copyB = Arrays.copyOf(oldA, oldA.length);
     4) Arrays.copyOfRange();
    - 예시
        int[] oldA = new int[]{1,2,3,4,5};
        copyB=Arrays.copyOfRange(oldA, 0, oldA.length); 
     5) System.arraycopy();
    - 예시
        int[] oldA = new int[]{1,2,3,4,5};
        System.arraycopy(oldA, 0, copyB, 0, oldA.length);