어제 오늘 내일

[Java 기초] Arrays.copyOf()로 배열 복사하기 본문

IT/Java

[Java 기초] Arrays.copyOf()로 배열 복사하기

hi.anna 2025. 8. 27. 12:44

자바에서 배열을 다루다 보면, 기존 배열의 크기를 늘리거나 일부만 복사해야 할 때가 있습니다.
이때 유용하게 사용할 수 있는 메서드가 바로 Arrays.copyOf() 입니다.

이번 글에서는 Arrays.copyOf()의 기본 사용법부터 실무에서 자주 쓰이는 활용 예제까지 정리해보겠습니다.

 

1. Arrays.copyOf()란?

  • Arrays.copyOf()는 기존 배열을 복사하여 새로운 배열을 생성하는 메서드입니다.
  • 배열 크기를 늘리거나 줄이는 것도 가능합니다.
  • 반환값은 새로운 배열 객체입니다. (원본은 변경되지 않음)

 

2. 기본 사용법

import java.util.Arrays;

public class CopyOfExample1 {
    public static void main(String[] args) {
        int[] original = {1, 2, 3};
        int[] copy = Arrays.copyOf(original, original.length);

        System.out.println("원본: " + Arrays.toString(original));
        System.out.println("복사본: " + Arrays.toString(copy));
    }
}

실행 결과

원본: [1, 2, 3]
복사본: [1, 2, 3]

👉 같은 길이로 복사하면 원본과 동일한 배열이 생성됩니다.

 

3. 크기를 늘려서 복사

배열 크기를 늘리면 나머지는 기본값으로 채워집니다.

import java.util.Arrays;

public class CopyOfExample2 {
    public static void main(String[] args) {
        int[] original = {1, 2, 3};
        int[] extended = Arrays.copyOf(original, 5);

        System.out.println(Arrays.toString(extended));
    }
}

실행 결과

[1, 2, 3, 0, 0]

👉 기본형 배열은 0, 객체 배열은 null이 들어갑니다.

 

4. 크기를 줄여서 복사

길이를 줄이면 앞에서부터 원하는 길이만큼만 복사됩니다.

import java.util.Arrays;

public class CopyOfExample3 {
    public static void main(String[] args) {
        int[] original = {1, 2, 3, 4, 5};
        int[] smaller = Arrays.copyOf(original, 3);

        System.out.println(Arrays.toString(smaller));
    }
}

실행 결과

[1, 2, 3]

👉 copyOf는 항상 앞에서부터 복사한다는 점을 기억하세요.

 

5. 문자열 배열 복사

import java.util.Arrays;

public class CopyOfExample4 {
    public static void main(String[] args) {
        String[] fruits = {"Apple", "Banana", "Cherry"};
        String[] copied = Arrays.copyOf(fruits, 5);

        System.out.println(Arrays.toString(copied));
    }
}

실행 결과

[Apple, Banana, Cherry, null, null]

👉 문자열 배열은 크기를 늘리면 null로 채워집니다.

 

6. 실무 활용 예시 – 배열 크기 동적 변경

배열은 크기가 고정되어 있어서 새로운 데이터를 추가할 수 없습니다.
이럴 때 Arrays.copyOf()를 사용하면 배열 확장이 가능합니다.

import java.util.Arrays;

public class CopyOfExample5 {
    public static void main(String[] args) {
        int[] numbers = {1, 2, 3};

        // 크기를 늘리고 새 값 추가
        numbers = Arrays.copyOf(numbers, numbers.length + 1);
        numbers[numbers.length - 1] = 4;

        System.out.println(Arrays.toString(numbers));
    }
}

실행 결과

[1, 2, 3, 4]

👉 ArrayList 같은 컬렉션을 쓰면 더 편리하지만, 배열을 계속 써야 할 때는 이런 방식이 유용합니다.

 

7. 정리

  • Arrays.copyOf(배열, 새 길이) → 새로운 배열 생성
  • 길이가 크면 기본값(0, null)으로 채움
  • 길이가 작으면 앞에서부터 잘라서 복사
  • 배열 확장이나 축소가 필요할 때 많이 활용

배열 크기를 조절하거나 안전하게 복사할 때는 Arrays.copyOf()가 정석!

반응형
Comments