(혼) (공) (자)
배열복사
만석이
2023. 12. 31. 00:08
왜 쓸까?
배열을 복사하려고...
정수에서 변수를 복사하는것은 쉽다.
a=3
b=a;
하지만 배열에서 이렇게 복사하면 문제가 생긴다.
바로 a의 위치값을 b가 그대로 가져오기 때문이다. (참조형 변수)
a와 b 둘다 같이 위치의 값을 보기때문에
a의 값을 변경하면 b도 같이변한다.
예제를 보자
int[] a = {1,2,3,4,5};
int[] b = null;
b=a;
for(int i=0; i < b.length; i++){
System.out.print(b[i]); a[0]=3;
}
System.out.println();
for(int i=0; i < b.length; i++) {
System.out.print(b[i]);
}
출력 결과는
12345
32345
즉 정리하면 변수는 2개지만 값을 하나만 바라보는 상황이다.
이런 복사를 얇은복사 라고한다.
그럼 어떻게 해야할까?
첫번째 방법은 하나하나 반복문으로 옮기는것이다.
두번째 방법은 System.array copy 함수를 사용한다.
기본틀은 이렇다
array copy(복사할 배열,복사시작Index,대상배열,복사길이)
예제를보자
int[] a = {1, 2, 3, 4, 5}; int[ ] b = new int[a.length]; // 배열 b를 초기화 System.arraycopy(a, 0, b, 0, a.length); for (int i = 0; i < b.length; i++) { System.out.println(b[i]); } |
1. 배열b 초기화
2.system.arraycopy 함수로 복사