728x90

배열을 복사하는 방법은 크게 2가지가 있다.
1. System.arraycopy( 복사할 배열 원본, 시작 위치, 복사 당할 배열, 시작 위치, 복사할 개수 )
int[] test = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int[] copied = new int[5];
System.arraycopy(test, 0, copied, 0, 5);
System.out.println(Arrays.toString(copied)); // [ 1, 2, 3, 4, 5 ]
System.arraycopy( ) 는 복사를 시작할 위치와 복사할 개수를 매개변수로 지정한다.
2 - 1. Arrays.copyOf( 복사할 배열 원본, 복사할 개수 )
int[] test = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int[] copied = Arrays.copyOf(test, 5);
System.out.println(Arrays.toString(copied)); // [ 1, 2, 3, 4, 5 ]
2 - 2. Arrays.copyOfRange( 복사할 배열 원본, 시작 인덱스, 끝 인덱스(포함x) )
int[] test = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int[] copied = Arrays.copyOfRange(test, 0, 5);
int[] copied2 = Arrays.copyOfRange(test, 2, 5);
System.out.println(Arrays.toString(copied)); // [ 1, 2, 3, 4, 5 ]
System.out.println(Arrays.toString(copied2)); // [ 3, 4, 5 ]
Arrays.copyOf( ) 의 경우는 시작 위치가 인덱스 0 으로 고정되어 매개변수엔 복사할 원소의 개수를 기입한다. 반면 Arrays.copyOfRange( ) 는 시작 인덱스와 복사를 끝내는 지점을 매개변수에 지정할 수 있다. 이때 끝 인덱스는 포함되지 않는다.
- System.arraycopy( ) 와 Arrays.copyOf( ) 메서드의 차이는 새로운 배열 생성의 여부에 있다. System.arraycopy( ) 는 이미 만들어진 배열을 가지고 와서 복사한다. 반면 Arrays.copyOf( ) 메서드는 복사한 새로운 배열을 만들기 때문에 새로운 배열 변수를 선언해줘야 한다.
'Java' 카테고리의 다른 글
| [Java] String ← → 기본형 값 (feat. 형변환) (0) | 2022.09.09 |
|---|---|
| [Java] String 클래스의 replace() & replaceAll() 메서드 (0) | 2022.09.08 |
| [Java] 배열과 리스트 사이의 변환 방법들 ( feat. Arrays.asList() ) (0) | 2022.09.01 |
| [Java] String 클래스의 .split() 메서드 사용하기 (0) | 2022.08.31 |
| [Java] System.out.printf() 메서드 사용법 (feat. String.format()) (0) | 2022.08.29 |