반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- 정규식
- Array
- json
- Button
- date
- 이탈리아
- 자바
- 이클립스
- Visual Studio Code
- CSS
- CMD
- javascript
- windows
- js
- table
- Maven
- ArrayList
- 배열
- vscode
- IntelliJ
- Java
- 테이블
- Eclipse
- html
- list
- 문자열
- input
- 인텔리제이
- 자바스크립트
- string
Archives
- Today
- Total
어제 오늘 내일
[Java 기초] Arrays.copyOfRange()로 배열 구간 복사하기 본문
자바에서 배열은 크기가 고정되어 있기 때문에, 원하는 크기나 구간만 잘라서 새 배열을 만들어야 할 때가 있습니다.
이럴 때 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()
를 쓰자!
반응형
'IT > Java' 카테고리의 다른 글
[Java 기초] Arrays.binarySearch()로 배열 검색하기 (0) | 2025.08.29 |
---|---|
[Java 기초] Arrays.equals()로 배열 비교하기 (1) | 2025.08.28 |
[Java 기초] Arrays.copyOf()로 배열 복사하기 (0) | 2025.08.27 |
[Java 기초] Arrays.sort() vs Collections.sort() 차이 정리 (0) | 2025.08.27 |
[Java StringBuffer] reverse() – 문자열 뒤집기 (1) | 2025.08.26 |
Comments