반응형
이번에는 System.arraycopy
에 대해 정리하겠습니다.
System.arraycopy란?
System.arraycopy
는 메소드는 배열의 값들을 지정한 위치에서 갯수만큼 값을 복사할 수 있습니다.
System.arraycopy 메소드
public static native void arraycopy(Object src, int srcPos,
Object dest, int destPos,
int length);
Object src
-> 복사하려는 배열
int srcPos
-> 복사하려는 시작 인덱스
Object dest
-> 복사받으려는 배열 (붙여넣으려는)
int destPos
-> 복사받으려는 시작 인덱스 (붙여넣으려는)
int length
-> 복사하려는 갯수
만약, srcPos + length가 src.length보다 크거나 destPos + length가 dest.length보다 크다면 IndexOutOfBoundsException이 발생하며 복사는 실행되지 않습니다.
예시
import org.junit.jupiter.api.Test
class SystemArrayCopyTest {
@Test
fun `System arrayCopy`() {
val array1 = intArrayOf(0, 1, 2, 3, 4)
val array2 = intArrayOf(100, 101, 102, 103, 104)
System.arraycopy(array1, 0, array2, 2, 3)
println(array2.toList()) // [100, 101, 0, 1, 2]
}
}
위의 코드처럼 작성하면 array1에 인덱스 0부터 2까지 복사해서 array2에 인덱스 2부터 4까지 붙여넣습니다.
실행결과
반응형