ABOUT

성능과 운영 안정성을 함께 끌어올리는 개발자입니다.

92% Positional Error Reduction
79% p95 Latency Improvement
90%+ Long Tasks Reduction

2022.02 · 한국장학재단

우수 멘티

한국장학재단 사회 리더 대학생 멘토링 IT

2022.10 · 동작구청

우수 인재상

동작구청 우수 SW 인재

2025.05 · (주) 그랩

프로그래밍 우수상

(주) 그랩 우수 프로그램 개발

2025.05 · AWSKRUG

AWS한국사용자모임 발표

AI agent 스크립트 튜닝 관련 발표

ComputerScience

Development

Engineering

Trouble Shooting

GUESTBOOK

첫 마음부터
함께 나누는 온기

방명록 작성하러 가기

SUBSCRIBE

최신소식을
편하게 만나보세요.

copyOfRange

Arrays.copyOfRange() 메서드는 Java에서 배열의 일부분을 복사하여 새로운 배열을 생성할 때 사용하는 유틸리티 메서드입니다. 이 메서드는 주어진 범위의 배열 요소를 복사하고, 필요한 경우 복사된 배열의 크기를 조정할 수 있습니다.

메서드 시그니처:

java
코드 복사
public static int[] copyOfRange(int[] original, int from, int to)
  • original: 복사할 원본 배열.
  • from: 복사를 시작할 인덱스 (포함).
  • to: 복사를 종료할 인덱스 (미포함).

copyOfRange()는 원본 배열의 일부를 복사하여 새로운 배열을 반환합니다. from 인덱스에서 시작하여 to 인덱스 바로 전까지의 원소들을 복사합니다.

예시 코드

import java.util.Arrays;
public class Main { public static void main(String[] args) { 
// 원본 배열
	int[] original = {1, 2, 3, 4, 5, 6};
// 배열의 1번 인덱스부터 4번 인덱스 전까지 복사
	int[] copiedArray = Arrays.copyOfRange(original, 1, 4);
// 복사된 배열 출력
	System.out.println(Arrays.toString(copiedArray)); // [2, 3, 4]
    }
}

설명:

  • 원본 배열 original은 {1, 2, 3, 4, 5, 6}입니다.
  • Arrays.copyOfRange(original, 1, 4)는 인덱스 1부터 인덱스 4 직전까지의 배열 요소들, 즉 {2, 3, 4}를 복사하여 새로운 배열을 생성합니다.
  • 주의: to 인덱스는 미포함입니다. 즉, from은 포함되지만 to는 포함되지 않습니다.

반환 값:

  • 새로운 배열은 지정한 범위의 원소를 포함하며, 원본 배열의 크기와 관계없이 원하는 크기만큼 새 배열이 만들어집니다.

사용 예시: 배열의 일부 복사 및 배열 크기 조정

import java.util.Arrays;

public class Main { public static void main(String[] args) {
// 원본 배열
	int[] original = {10, 20, 30, 40, 50, 60};
// 2번 인덱스부터 끝까지 복사
	int[] copiedArray1 = Arrays.copyOfRange(original, 2, original.length);
	System.out.println(Arrays.toString(copiedArray1)); // [30, 40, 50, 60]
// 배열의 처음부터 3번째 인덱스까지 복사
	int[] copiedArray2 = Arrays.copyOfRange(original, 0, 3);
	System.out.println(Arrays.toString(copiedArray2)); // [10, 20, 30]
	}
}
 
주요 특징:
  1. 복사할 범위 설정 가능: 배열의 특정 부분만 복사할 수 있습니다. 예를 들어, 배열의 첫 3개 요소만 복사하거나 마지막 몇 개 요소만 복사하는 경우에 유용합니다.
  2. 새 배열 반환: copyOfRange()는 원본 배열에서 지정된 범위의 요소들을 포함하는 새로운 배열을 반환합니다. 원본 배열은 변경되지 않습니다.
  3. 크기 조정: copyOfRange()는 범위 내의 요소를 복사하면서 새 배열의 크기를 자동으로 맞춰줍니다. 배열 크기를 변경할 수 있어, 예를 들어 원본 배열보다 작은 크기의 배열을 반환할 수 있습니다.
  4. 범위 오류 처리: from이 to보다 클 경우 ArrayIndexOutOfBoundsException이 발생합니다. from과 to가 배열의 유효 범위 내에 있는지 확인해야 합니다.

from 또는 to 값이 범위를 벗어날 경우:

  • 만약 to 값이 배열의 크기보다 크면, copyOfRange()는 자동으로 원본 배열의 끝까지 복사합니다.
  • 예를 들어, 배열의 크기가 5이고, copyOfRange(original, 1, 10)을 호출하면 to가 10이지만 배열 크기는 5이므로, 실제로는 to 값이 배열 크기인 5로 조정되어 복사가 진행됩니다.
int[] copiedArray = Arrays.copyOfRange(original, 1, 10);
// [20, 30, 40, 50] (to 값이 10을 초과해도 배열 크기만큼 복사됨)
 

결론:

Arrays.copyOfRange()는 배열의 일부분을 복사하거나 배열을 자를 때 유용한 메서드로, 간단하게 범위 내의 배열을 새로운 배열로 복사하는 데 사용됩니다. from과 to를 적절히 설정하여 원하는 범위만큼 배열을 추출할 수 있습니다.

 
 
 
 
728x90