배열은 최초의 크기가 정해지고 나면 변경이 불가하다
배열 복사로 크기를 변경하는 방법을 알아보자
char[ ] arr = {'J', 'A', 'V', 'A'};
char[] newArr = new char [arr.length + 2]; // arr 길이보다 2 큰 배열 생성,
값은 null문자('\0')로 채워진다
(null문자와 null은 다르다
null은 값 자체가 존재하지 않음)
for(i=0; i<arr.length ; i++) {
arr1[i]=arr[i]; // for문으로 값을 복사
}
System.out.println(Arrays.toString(newArr));
출력값 : [J, A, V, A, , ]
void arraycopy (원본, 원본의 시작 index, 도착지, 도착지의 시작 index, 복사할 개수)
- void : 돌려주는 값이 없음
char[ ] arr = {'J', 'A', 'V', 'A'};
char[] newArr = new char [arr.length + 2]; // 새로운 배열 생성
System.arraycopy(arr, 0, arr2, 0, arr.length); // 복사
System.out.println(Arrays.toString(newArr);
출력값 : [J, A, V, A, , ]
char[ ] copyOf (원본, 새로운 배열 객체의 길이)
- char 타입으로 돌려줌
char[ ] arr = {'J', 'A', 'V', 'A'};
char[] arr2 = null; // 값이 없다는 뜻. null문자와 다름
arr2 = Arrays.copyOf(arr, arr.length+2);
System.out.println(Arrays.toString(arr2));
출력값 : [J, A, V, A, , ]
T[ ] copyOfRange (원본, 복사할 시작 index, 복사할 끝 index+1)
- T[ ] : 타입이 결정되지 않음. 객체가 생성될 때 타입 결정된다
char[] arr3 = null;
arr3 = Arrays.copyOfRange(arr, 1, 2+1); // 'A','V' (인덱스 1~인덱스2까지 복사)
System.out.println(Arrays.toString(arr3));
출력값 : [A, V]