배열 복사
배열은 한 번 생성하면 크기를 변경할 수 없기 때문에 더 많은 저장 공간이 필요하면 더 큰 배열을 만들고 이전 배열의 항목을 복사해야함
1. for문 사용
int[] oldArr = {1,2,3}
int[] newArr = new int[5];
for(int i=0;i<oldArr.length;i++){
newArr[i]=oldArr[i];
}
위의 경우, 1,2,3은 그대로 복사하고 4번째 5번째 항목의 경우 int형 배열의 초기값인 0이 된다.
2. System.arraycopy() 메소드 사용
System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length);
// src : 원본배열
// srcPos : 원본 배열에서 복사할 항목의 시작 인덱스
// dest : 새 배열
// destPos : 새 배열에서 붙여넣을 시작 인덱스
// length : 복사할 개수
예를 들면
System.arraycopy(arr1,0,arr2,0,arr1.length);
//arr1의 모든 항목을 arr2에 복사
String[] oldArr = {"kbs","sbs","mbc"};
String[] newArr = new String[5];
System.arraycopy(oldArr,0,newArr,0,oldArr.length);
String[] 배열의 초기값은 null이므로 newArr의 4번째 5번째 항목은 null이다.
Shallow copy
참조타입 배열의 경우, 배열 복사가 되면 복사되는 값이 객체의 번지이므로 새 배열의 항목은 이전 배열의 항목이 참조하는 객체와 동일함
Depp copy
객체도 별도로 생성
'Programming Language > Java' 카테고리의 다른 글
[JAVA] 열거 객체의 메소드 (0) | 2020.10.12 |
---|---|
[JAVA] 열거상수, 열거 타입변수, 객체 ? (0) | 2020.10.10 |
[JAVA] 열거 (enumeration)타입이란? (0) | 2020.10.10 |
[JAVA] for-each문 (0) | 2020.10.10 |
[JAVA] eclipse에서 프로그램을 실행할 때 매개값을 주고 실행하려면? (0) | 2020.10.09 |