java) copy


  • java에서 배열 복사하는 방법
    • Arrays.copyOf(arr, end) 

      - 해당 배열의 처음부터 endindex만큼의 배열을 리턴

      Arrays.copyOfRange(arr, start, end); 

      - 해당 배열을 시작 인덱스에서부터 끝인덱스(포함x)만큼 배열을 리턴

      Arrays.clone(arr)

       - 매개변수의 배열을 복사하여 리턴.

      System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length) 

      - Arrays.copyOf() 메소드 내부에서 호출되어지는 메소드.

 

 

  • shallow copy(얕은 복사)
    • 변수가 가르키는 실제 값을 복사되는 것이아닌 주소 값이 복사 되는 경우, 원본과 복사본은 같은 주소값을 가르키기 때문에 복사본이 원본에 영향을 준다.
  • deep copy(깊은 복사)
    •  주소값이 아닌 실제 값을 새로운 메모리에 복사된다. 복사본은 원본에 영향을 없다.

 

  • 배열의 요소의 데이터타입이 기본형이 아닌 객체(참조형) 이루어진 배열의 경우
    • 위의 기본적으로 제공되는 배열들로는 완전한 깊은 복사가 이루어 없다.
    • 배열자체는 새로운 공간에 만들어지나 요소들은 원본 배열의 요소인 객체의 주소값만 복사 되어진다.
    • 반복문을 이용하여 실제값에 접근, 새로운 배열의 요소에 직접 값을 넣어준다.

댓글

가장 많이 본 글