Arrays.copyOf()와 Arrays.copyOfRange()은 둘 다 배열을 복사하여 새로운 배열을 생성하는 데 사용됩니다.
그러나 두 메서드 간에는 몇 가지 중요한 차이점이 있습니다.
Arrays.copyOf()
public static int[] copyOf(int[] original, int newLength)
- original: 복사할 원본 배열입니다.
- newLength: 새로운 배열의 길이를 지정합니다.
`Arrays.copyOf()` 메서드는 원본 배열의 일부가 아닌 전체를 복사하여 새로운 배열을 생성합니다.
이때, `newLength` 매개변수는 생성될 배열의 새로운 길이를 지정합니다. 만약 `newLength`가 원본 배열의 길이보다 크다면, 추가된 요소는 해당 데이터 타입의 기본값으로 채워집니다(예: `0` 또는 `null`).
int[] originalArray = {1, 2, 3, 4, 5};
int[] copiedArray = Arrays.copyOf(originalArray, 3); // {1, 2, 3}
`Arrays.copyOfRange()`
public static int[] copyOfRange(int[] original, int from, int to)
- original: 복사할 원본 배열입니다.
- from: 복사를 시작할 인덱스(포함됨).
- to: 복사를 종료할 인덱스(포함되지 않음).
`Arrays.copyOfRange()` 메서드는 원본 배열의 일부를 복사하여 새로운 배열을 생성합니다.
`from`부터 `to - 1`까지의 요소가 새 배열에 복사됩니다. 반환된 배열의 길이는 `(to - from)`와 같습니다.
int[] originalArray = {1, 2, 3, 4, 5};
int[] copiedArray = Arrays.copyOfRange(originalArray, 1, 4); // {2, 3, 4}
비교해 보기
- 복사 범위: `copyOf()`는 배열의 전체를 복사하는 반면, `copyOfRange()`는 지정된 범위만큼의 일부를 복사합니다.
- 반환 배열의 길이: `copyOf()`에서는 새 배열의 길이를 직접 지정할 수 있지만, `copyOfRange()`에서는 복사된 범위에 따라 길이가 결정됩니다.
- 요소 값 초기화: `copyOf()`에서는 새 배열이 원본 배열보다 길이가 큰 경우 추가된 요소가 기본값으로 초기화됩니다. 그러나 `copyOfRange()`에서는 범위 내의 원본 배열 요소만을 복사하므로 초기화 과정이 필요하지 않습니다.
때문에 두 메서드는 각각 다른 상황에 사용될 수 있으며, 필요에 따라 적절히 선택하여 사용하면 될 것 같습니다 :)
'CS 지식 && 백엔드 기술' 카테고리의 다른 글
TCP/IP 프로토콜 (0) | 2023.10.17 |
---|---|
OSI 7계층 (1) | 2023.10.17 |
DDD (Domain-Driven Design) (0) | 2023.10.17 |
CS) 프레임워크와 라이브러리의 차이 (0) | 2023.10.16 |
CS) 동기와 비동기의 차이 (0) | 2023.10.16 |