728x90
1. 새로운 배열 생성 후 포문으로 도는 방법
for : [1, 2, 3, 4, 5]
int[] arr = {1, 2, 3, 4, 5};
//1. for 문을 이용
int[] cpyArrFor = new int[arr.length];
for (int i = 0; i < arr.length; i++) {
cpyArrFor[i] = arr[i];
}
System.out.println(" for : " + Arrays.toString(cpyArrFor));
System.out.println();
2. arr.clone()를 이용하는 방법
clone : [1, 2, 3, 4, 5]
//2. clone을 이용
int[] cpyArrClone = arr.clone();
System.out.println(" clone : " + Arrays.toString(cpyArrClone));
System.out.println();
3.System.arraycopy()를 이용하는 방법
System : [1, 2, 3, 4, 5]
System 범위 : [3, 4, 5, 0, 0]
public static native void arraycopy(Object src, int srcPos,Object dest, int destPos,int length);
src의 데이터를 srcPos부터 length의 길이만큼 dest의 destPos의 위치에 복사한다.
//3. System.arraycopy()를 이용
int[] cpyArrSystem = new int[arr.length];
System.arraycopy(arr, 0, cpyArrSystem, 0, cpyArrSystem.length);
System.out.println(" System : " + Arrays.toString(cpyArrSystem));
//3.1 System.arraycopy()의 범위 변경, arr의 데이터를 2부터 arr.length-2의 범위까지를 cpyArrSystem2의 0번째에 복사한다.
int[] cpyArrSystem2 = new int[arr.length];
System.arraycopy(arr, 2, cpyArrSystem2, 0, arr.length - 2);
System.out.println("System 범위 : " + Arrays.toString(cpyArrSystem2));
System.out.println();
4. Arrays.copyOf를 사용하는 방법
Arrays : [1, 2, 3, 4, 5]
Arrays 범위 : [1, 2, 3, 4]
//4. Arrays.copyOf
int[] cpyArrArrays = Arrays.copyOf(arr, arr.length);
System.out.println(" Arrays : " + Arrays.toString(cpyArrArrays));
//4.1 arr배열을 0부터 arr.length-1까지의 내용을 복사한다.
int[] cpyArrArrays2 = Arrays.copyOfRange(arr, 0, arr.length - 1);
System.out.println("Arrays 범위 : " + Arrays.toString(cpyArrArrays2));
System.out.println();
❓만약 배열사이즈를 변경하고 싶은 경우?
-> 1,2번을 사이즈가 큰 배열을 선언하고 활용하여 복사하면 된다.
❓만약 2차원 배열이라면?, 참조형 변수라면(다른 선언한 클래스 객체들.. User, Player.. 직접 clone 해주어야 한다.)
-> clone을 이용하여 각 객체를 copy 해줘야 한다.
-> 위에서 설명한 것은 참조변수가 아니고 기본자료형이기에 바로 복사가 가능하다.
//2차원 배열내용을 카피하는 방법
int size = 5;
int[][] map = new int[size][size];
int[][] cpyMap = new int[size][size];
//cpyMap에 map의 내용을 카피하고 싶다면
for(int i=0;i<size;i++){
cpyMap[i] = map[i].clone();
}
728x90
'JAVA' 카테고리의 다른 글
람다식(Lambda Expression) (1) | 2023.03.08 |
---|---|
Enum 클래스 (0) | 2023.02.28 |
ArrayList와 LinkedList (0) | 2023.02.24 |
오버로딩과 오버라이딩 (0) | 2023.02.22 |
JAVA 자료형 범위 (0) | 2022.10.03 |
댓글