본문 바로가기
프로그래밍 언어/Java

[Java] 배열 관련 함수 arraycopy() 분석

by 까망 하르방 2021. 3. 4.
반응형

System.arraycopy()

가끔은 배열을 이용하다가 복사를 해야 하는 경우도 발생합니다.

물론 반복문을 통해서도 처리할 수는 있지만, 

속도의 측면이나 복잡함 때문에 System.arraycopy() 이용할 수도 있다.

arraycopy(Object src, int srcPos, object dest, int destPos, length)

src: 원본 배열

srcPos: 원본의 복사 시작 인덱스 번호

dest: 대상 배열

destPos: 대상 배열의 복사 시작 인덱스 번호

length: 개수

(※ 인덱스 번호는 0에서부터 시작)

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        
        int[] arr = {1, 2, 3, 4, 5, 6};
        int[] temp = {1,2,0,0};
        
        System.out.println("복사 전 arr: " + Arrays.toString(arr));
        System.out.println("복사 전 temp: " + Arrays.toString(temp));
        
        System.arraycopy(arr, 2, temp, 1, 2);
        
        System.out.println("\n복사 후 arr: " + Arrays.toString(arr));
        System.out.println("복사 후 temp: " + Arrays.toString(temp));
    }
}

System.arraycopy(arr, 2, temp, 1, 2);

'arr' 배열의 3번째 원소부터 데이터 2개

'temp' 배열의 2번째 원소부터 시작해서 크기 2만큼의 자리에 그대로 복사한다.

(※ 원본,대상 배열 모두 length 만큼의 크기를 지녀야 한다!

그러지 않으면 ArrayIndexOutOfBoundsException 에러가 출력된다. )

 

Arrays.arraycopy() 

배열 정렬

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        
        int[] arr = {100, 91, 30, 30, 40, 50};
        System.out.println("정렬 전: " + Arrays.toString(arr));
        
        Arrays.sort(arr);
        
        System.out.println("정렬 후: " + Arrays.toString(arr));
    }
}

 

 

반응형

'프로그래밍 언어 > Java' 카테고리의 다른 글

[Java] Setter vs 생성자  (0) 2021.03.04
[Java] 유효범위  (0) 2021.03.04
[Java] 배열 개념 (선언 및 초기화)  (0) 2021.03.04
[Java] 컬렉션(Collection)  (0) 2021.03.04
[Java] 객체 소멸  (0) 2021.03.02

댓글