Arrays.copyOf란?
Arrays.copyOf는 배열을 복사하는 데 사용되는 메소드입니다.
이 메소드는 주어진 배열을 지정된 길이만큼 복사하여 새로운 배열을 생성합니다.
복사된 배열은 원본 배열의 값들을 포함하지만, 배열의 크기를 늘리거나 줄일 수 있습니다.
만약 새로 생성된 배열의 크기가 원본 배열보다 크면 나머지 요소는 기본값으로 채워집니다.
기본값은 정수형은 0, 실수형은 0.0, 문자형은 공백, 객체형은 null로 들어갑니다.
Java 8 Arrays.copyOf 공식 문서 바로가기
Arrays.copyOf 깊은 복사 사용 방법
일반적으로 배열을 복사하면 주소 값만 복사되기 때문에 원본이나 수정본을 수정하면 원본과 수정본 둘다 값이 변경됩니다.
Arrays.copyOf 메소드를 사용하면 깊은 복사가 가능합니다.
다음은 Arrays.copyOf로 String 배열을 복사하는 예제 코드입니다.
String[] original = {"apple", "banana"};
String[] copy = Arrays.copyOf(original, original.length);
copy[0] = "cherry";
System.out.println("original = " + Arrays.toString(original));
System.out.println("copy = " + Arrays.toString(copy));
깊은 복사가 이루어졌기 때문에 복사본을 수정해도 원본에 영향이 없음을 알 수 있습니다.
Arrays.copyOfRange 사용법
copyOfRange는 배열을 복사할 때 범위를 지정해서 복사할 수 있습니다.
int[] original = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int[] copy = Arrays.copyOfRange(original, 2, 5);
System.out.println("original = " + Arrays.toString(original));
System.out.println("copy = " + Arrays.toString(copy));
범위의 시작과 끝을 지정하여 복사할 수 있는데, 예제에서 확인할 수 있듯이 끝 번호는 제외됩니다.