728x90

개요

// 1차원 배열 복사
int[] original = {1, 2, 3, 4, 5};
int[] copied = new int[original.length];

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

// 2차원 배열 복사
int[][] original2D = {{1, 2}, {3, 4}, {5, 6}};
int[][] copied2D = new int[original2D.length][original2D[0].length];

for(int i = 0; i < original2D.length; i++) {
    for(int j = 0; j < original2D[i].length; j++) {
        copied2D[i][j] = original2D[i][j];
    }
}

 

Java를 사용하다보면 객체배열을 복사해야하는 경우가 있습니다. 이 때 위와 같이 반복문을 사용하여 복사를 해야 합니다. 

 

하지만 Java에서는 배열을 복사하는 여러 가지 메서드를 제공합니다. 각각의 방법에 대해 알아보겠습니다.

 

clone() 메서드 사용

int[] original = {1, 2, 3, 4, 5};
int[] cloned = original.clone();

 

가장 간단한 방법으로, 배열의 clone() 메서드를 사용하는 것입니다.

특징

  • 가장 간단한 방법
  • 얕은 복사만 수행
  • 다차원 배열의 경우 주의 필요
 

System.arraycopy() 사용

int[] original = {1, 2, 3, 4, 5};
int[] copied = new int[original.length];
System.arraycopy(original, 0, copied, 0, original.length);
 
System.arraycopy()는 지정된 배열의 지정된 범위새 배열의 지정된 위치에 복사합니다.

특징

  • 가장 빠른 성능
  • 부분 복사 가능
  • 매개변수가 많아 사용이 다소 복잡
 

Arrays.copyOf() 사용

int[] original = {1, 2, 3, 4, 5};
int[] copied = Arrays.copyOf(original, original.length);

 

Arrays 클래스의 copyOf() 메서드를 사용하여 배열을 복사할 수 있습니다.

특징

  • 새로운 길이 지정 가능
  • 사용이 간단
  • 내부적으로 System.arraycopy() 사용
  1.