반응형
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);
'◼ JAVA' 카테고리의 다른 글
[Java/자바] 클래스 변수, 인스턴스 변수, 지역 변수란? (1) | 2022.10.18 |
---|---|
[Java/자바] 클래스와 객체 (1) | 2022.10.18 |
[Java/자바] 연산자의 모든 것 (0) | 2022.10.13 |
[Java/자바] StringBuilder 클래스란 ? (0) | 2022.10.13 |
(Java/자바) 숫자를 문자열로 변환 - toString(), valueOf() (0) | 2022.10.12 |