JAVA를 자바
[10] System.arraycopy
지식보부상님
2020. 12. 29. 16:43
한 배열을 다른 배열에 copy 하고 싶으면 가장 먼저 생각나는 건
B = A 와 같이 할당하는 거죠!
그런데 B = A 라고 하게 되면, B의 내용을 바꾸면 A의 내용도 바뀌는 대참사가 벌어집니다!
물론 이런 상황을 원하는 경우도 발생하겠지만
일반적으로는 B의 내용이 바뀌더라도 A는 그 내용을 유지하는 경우가 훨씬 많죠!
1
2
3
4
5
6
|
int A[] = { 1, 3, 5, 7, 9 };
int[] B = new int[5];
B = A;
B[2] = 4;
for (int i = 0; i < 5; i++)
System.out.print(A[i] + " ");
|
cs |
위와 같은 코드를 보면 B[2]를 4로 바꿨고
line 5~6 에는 배열 A의 값을 출력하도록 했습니다!
결과는 어떻게 될까요??
다음과 같이 A[2]의 값도 4로 바뀌었음을 알 수 있습니다!
따라서 A와 B의 값이 서로 영향을 받지 않으면서
그 내용만을 copy 하고 싶은 경우에는 System.arraycopy(scrArray, i, destArray, j, n); 의 형태로
System.arraycopy를 사용하면 됩니다!!
scrArray는 source array,
i는 scrArray의 시작 index,
destArray는 destination array,
j는 destArray의 시작 index,
n은 copy할 개수를 의미합니다.
따라서 위와 같은 예시에서는 System.arraycopy(A, 0, B, 0, 5);
라고 하면
A의 0번째 index부터 5개를 B의 0번째 index에서 부터 쭉 내용을 복사하는게 되겠네요!