어제 오늘 내일

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

IT/Java

[Java 기초] Arrays.copyOfRange()로 배열 구간 복사하기

hi.anna 2025. 8. 28. 12:51

자바에서 배열은 크기가 고정되어 있기 때문에, 원하는 크기나 구간만 잘라서 새 배열을 만들어야 할 때가 있습니다.
이럴 때 Arrays.copyOfRange() 메서드를 사용하면 아주 간단하게 처리할 수 있습니다.

 

1. Arrays.copyOfRange()란?

  • 배열의 특정 시작 인덱스부터 끝 인덱스 직전까지를 복사하여 새로운 배열을 반환합니다.
  • 원본 배열은 변경되지 않고, 새로운 배열이 생성됩니다.
  • Arrays.copyOf()와 달리, 원하는 구간만 선택적으로 복사할 수 있다는 점이 특징입니다.

👉 메서드 시그니처:

public static int[] copyOfRange(int[] original, int from, int to)
  • original : 원본 배열
  • from : 복사 시작 인덱스 (포함)
  • to : 복사 끝 인덱스 (미포함)

 

2. 기본 사용 예제

import java.util.Arrays;

public class CopyOfRangeExample1 {
    public static void main(String[] args) {
        int[] numbers = {10, 20, 30, 40, 50};

        int[] subArray = Arrays.copyOfRange(numbers, 1, 4);

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

실행 결과

[20, 30, 40]

👉 인덱스 1부터 3까지의 값만 복사됩니다. (to는 포함되지 않음)

 

 

3. 범위를 벗어난 경우

만약 to가 원본 배열의 길이를 넘어가면, 나머지는 기본값(0 또는 null)으로 채워집니다.

import java.util.Arrays;

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

        int[] subArray = Arrays.copyOfRange(numbers, 1, 5);

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

실행 결과

[2, 3, 0, 0]

👉 원래 배열에 없는 인덱스 부분은 기본값(0)으로 채워집니다.

 

 

4. 문자열 배열 복사

copyOfRange()는 기본형 배열뿐만 아니라 객체 배열(예: 문자열)에도 사용할 수 있습니다.

import java.util.Arrays;

public class CopyOfRangeExample3 {
    public static void main(String[] args) {
        String[] fruits = {"Apple", "Banana", "Cherry", "Date"};

        String[] subArray = Arrays.copyOfRange(fruits, 0, 2);

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

실행 결과

[Apple, Banana]

 

5. 실무에서의 활용 예시

  • 페이징 처리: 큰 배열에서 일부 데이터만 잘라내어 사용
  • 배열 분리: 전반부, 후반부로 나누기
  • 테스트용 샘플 추출: 배열에서 특정 구간만 떼어내기

예) 배열의 앞 절반과 뒷 절반 나누기

import java.util.Arrays;

public class CopyOfRangeExample4 {
    public static void main(String[] args) {
        int[] data = {1,2,3,4,5,6};

        int[] firstHalf = Arrays.copyOfRange(data, 0, 3);
        int[] secondHalf = Arrays.copyOfRange(data, 3, data.length);

        System.out.println(Arrays.toString(firstHalf));
        System.out.println(Arrays.toString(secondHalf));
    }
}

실행 결과

[1, 2, 3]
[4, 5, 6]

 

6. 정리

  • copyOf() : 배열 전체를 복사하면서 크기만 변경 가능
  • copyOfRange() : 배열의 특정 구간만 선택적으로 복사 가능
  • 범위를 넘어가면 기본값으로 채워짐
  • 객체 배열에도 그대로 적용 가능

👉 배열에서 원하는 구간만 뽑아 새 배열을 만들 때는 Arrays.copyOfRange()를 쓰자!

 

 

반응형
Comments