Java

[Java] Arrays 배열 복사 - copyOf, copyOfRange

블로그 주인장 2024. 3. 22.

copyOf, copyOfRange

Java에서는 배열을 복사하는 방법은 여러 방법이 존재합니다.

for문이나 while문 같이 반복문을 활용하여 직접 값을 하나씩 넣어주는 방법이 있습니다.

또한, Arrays 메서드를 활용하는 방법도 있는데 이에 관해서 알아보겠습니다.

 

 

copyOf()

copyOf( ) 메서드는 Arrays.copyOf(복사할 배열, 복사할 배열의 크기) 로 사용하면 됩니다.

 

아래 코드를 예시로 확인해보겠습니다.

import java.util.Arrays;

public class solution {
    public static void main(String[] args) {
        
        int[] arr1 = {1, 2, 3};
        int[] arr2 = Arrays.copyOf(arr1, arr1.length);

        for(int i = 0; i < arr2.length; i++){
            System.out.print(arr2[i] + " "); 	//{1, 2, 3}
        }
        
    }
}

 

arr2 를 선언할 때 copyOf를 사용한 예시를 보면

 

copyOf의 첫 번째 인자에는 복사할 배열인 arr1두 번째 인자에는 복사할 배열의 크기인 arr1.length 를 넣었습니다.

 

이후 반환값을 확인하면 arr1의 값과 동일하게 arr2 값이 반환됩니다.

 

copyOfRange()

copyOfRange( ) 메서드는 Arrays.copyOfRange(복사할 배열, 복사할 배열의 시작점, 복사할 배열의 끝점) 로 사용하면 됩니다.

 

즉, 복사하고자 하는 배열의 범위를 지정하는 것을 확인할 수 있습니다.

 

아래의 예시를 보고 확인해보겠습니다.

import java.util.Arrays;

public class solution {
    public static void main(String[] args) {
        
        int[] arr1 = {1, 2, 3, 6, 9};
        int[] arr2 = Arrays.copyOfRange(arr1, arr1[0], arr[3]);

        for(int i = 0; i < arr2.length; i++){
            System.out.print(arr2[i] + " ");		//{1, 2, 3}
        }
        
    }
}

 

위의 예시로 확인하면 복사한 배열은 arr1 이 되고,

 

시작 인덱스는 arr1[0]인 첫번째 인덱스가 됩니다.

마지막 인덱스는 arr[3]인 4번째 인덱스가 됩니다.

 

하지만 여기서 주의할 점은 copyOfRange에서 복사되는 배열의

마지막 인덱스 값은 마지막 인덱스 - 1 이 된다는 점입니다.

 

이로써 결과 값은 {1, 2, 3} 이 반환됩니다.

 

 

 

 

본 포스트는 작성자가 공부한 내용을 바탕으로 작성한 글입니다.
잘못된 내용이 있을 시 언제든 댓글로 피드백 부탁드리겠습니다.
항상 정확한 내용을 포스팅하도록 노력하겠습니다.

반응형

댓글