배열의 복사
JAVA/기본 2007. 5. 29. 15:26배열은 객체 => 배열의 이름은 참조값
그러므로 당연히 할당은 참조값 복사 (같이 가르키고 있게 됨)
int[] 1학기점수 = new int[]{100, 90, 90, 30};
int[] 2학기점수 = 1학기점수; //참조값 복사
int[] 2학기점수 = 1학기점수; //참조값 복사
1. 부분배열 복사
System.arraycopy() 메서드를 이용
int[] source = new int[]{5, 4, 6, 9, 7, 9};
int[] target = {100, 200, 300, 400, 500, 600, 700};
System.arraycopy(source, 2, target, 3, 4};
int[] target = {100, 200, 300, 400, 500, 600, 700};
System.arraycopy(source, 2, target, 3, 4};
결과
target[0]:100
target[1]:200
target[2]:300
target[3]:6
target[4]:9
target[5]:7
target[6]:9
2. 전체배열 복사
배열의 속성 clone() 메서드를 이용
int[] source = new int[]{5, 4, 6, 9, 7, 9};
int[] target = (int[])source.clone();
int[] target = (int[])source.clone();
clone() 메서드는 메모리를 복사해서 Object형 객체를 리턴해주는 메서드