(Java/자바) System.arraycopy()를 이용해 배열 복사

System 클래스의 arraycopy()를 사용해 빠르게 배열을 복사 할 수 있습니다.

 

아래의 여러 예시를 통해 알아 볼 것이지만 System.arraycopy(num, 0, newNum, 0, num.length);  쉽게 이해하자면

newNum 배열의 0번째 부터 데이터를 넣을 건데, 그 데이터는 num 배열의 0번째 부터 num.length개의 데이터를 넣을 것이다.

 

 

쉬운 이해를 위해 예제 코드를 통해 알아봅시다.
public class ArrayEx4 {

	public static void main(String[] args) {
		char[] abc = {'A', 'B', 'C', 'D', 'E'};
		char[] num = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
		System.out.println(abc);
		System.out.println(num);
				
		// 배열 abc와 num을 붙여서 하나의 배열을 만든다.
		char[] result = new char[abc.length + num.length];
		System.arraycopy(abc, 0, result, 0, abc.length);
		System.arraycopy(num, 0, result, abc.length, num.length);
		System.out.println(result);
		
		// 배열 abc를 배열 num의 첫 번쨰 위치 부터 배열 abc의 길이만큼 복사
		System.arraycopy(abc, 0, num, 0, abc.length);
		System.out.println(num);
		
		// num의 인덱스 6위치에 3개를 복사
		System.arraycopy(abc, 0, num, 6, 3);
		System.out.println(num);

		// ArrayIndexOutOfBoundsException 에러
		System.arraycopy(abc, 0, num, 9, 3);
		System.out.println(num);
}
}

출력 결과

 

 

1️⃣ 배열 abc와 배열 num을 붙여서 하나의 배열을 만든다.

        char[] result = new char[abc.length + num.length];
		System.arraycopy(abc, 0, result, 0, abc.length);
		System.arraycopy(num, 0, result, abc.length, num.length);
		System.out.println(result);

배열 abc와 배열 num의 값을 합친 값을 넣을 char 형식의 result 배열을 만드는데

result 배열은  배열 abc와 배열 num를 합친 데이터를 저장합니다.

 

 

2️⃣ 배열 abc를 배열 num의 첫 번째 위치 부터 배열 abc의 길이만큼 복사

		System.arraycopy(abc, 0, num, 0, abc.length);
		System.out.println(num);

 

3️⃣ num의 인덱스 6위치에 3개를 복사

		System.arraycopy(abc, 0, num, 6, 3);
		System.out.println(num);

 

 

4️⃣ ArrayIndexOutOfBoundsException 에러

 

만약 복사하려는 위치가 적절하지 못해 복사하려는 내용보다 여유 공간이 작다면,

ArrayIndexOutOfBoundsException 에러가 발생합니다.

		System.arraycopy(abc, 0, num, 9, 3);
		System.out.println(num);