728x90
반응형
package com.kh.array;
import java.util.Arrays;
public class B_ArrayCopy {
// 얕은 복사 : 배열의 주소만 복사
// 깊은 복사 : 새로운 배열을 생성하여, 기존 배열 내부의 값을 그대로 복사
public void method1() {
// 얕은 복사 예제
int[] origin = {1, 1, 1, 1, 1};
System.out.println("origin 출력");
for(int i = 0; i < origin.length; i++) {
System.out.print(origin[i] + " "); // 1 1 1 1 1
}
System.out.println();
// arrCopy에 origin이 참조 하고 있는 주소 값 복사
int[] arrCopy = origin;
System.out.println("arrCopy 출력");
for(int i = 0; i < origin.length; i++) {
System.out.print(origin[i] + " "); // 1 1 1 1 1
}
System.out.println();
// arrCopy[2]의 값을 99로 변경
System.out.print("arrCopy[2]의 값을 99로 변경");
arrCopy[2] = 99;
// arrCopy 값 변경 확인
System.out.println("arrCopy 출력");
for(int i = 0; i < arrCopy.length; i++) {
System.out.print(arrCopy[i] + " "); // 1 1 99 1 1
}
System.out.println();
// origin 확인
System.out.println("origin 출력");
for(int i = 0; i < origin.length; i++) {
System.out.print(origin[i] + " "); // 1 1 99 1 1
}
System.out.println();
System.out.println("origin : " + origin);
System.out.println("arrCopy : " + arrCopy);
}
public void method2() {
// 깊은 복사
// 기존 배열 복제
int[] origin = {1, 1, 1, 1, 1};
int[] arrCopy = new int[origin.length]; // origin 만큼의 메모리 공간 할당
// 값 자체를 복사 (깊은 복사)
for(int i = 0; i < origin.length; i++) {
arrCopy[i] = origin[i];
}
//origin 출력
System.out.println(" origin 출력");
for(int i = 0; i < arrCopy.length; i++) {
System.out.println(origin[i]);
System.out.println();
}
// arrCopy 값 변경 확인
System.out.println("arrCopy 출력");
for(int i = 0; i < arrCopy.length; i++) {
System.out.print(arrCopy[i]);
}
System.out.println();
//origin 확인
System.out.println("origin 출력");
for(int i = 0; i < origin.length; i++) {
System.out.print(origin[i]);
}
System.out.println();
System.out.println("origin : " + origin);
System.out.println("arrCopy : " + arrCopy);
}
public void method3() {
// System.arraycopy() 사용하기
// System.arraycopy( src / srcPos / dest / destPos / length);
// System.arraycopy(원본배열명 / 원본배열에서 복사를 시작할 위치(인덱스) / 복사할 배열명(arrCopy) / 복사 배열에서 복사가 시작 될 위치 / 원본 배열에서 복사할 길이);
// origin 1 arrCopy2 2 3
int[] origin = {1, 2, 3, 4, 5};
// 0, 1, 2, 3, 4 index 번호.
int[] arrCopy = new int[10];
System.arraycopy(origin, 0, arrCopy, 0, origin.length); // origin 0번에서 arrCopy 0번을 origin의 길이만큼 복사하겠다.
for(int i = 0; i < arrCopy.length; i++) {
System.out.print(arrCopy[i] + " ");
}
System.out.println();
// 0 0 2 3 4 0 0 0 0 0
int[] arrCopy2 = new int[10];
System.arraycopy(origin, 1, arrCopy2, 2, 3); // origin index 1번에서 부터 arrCopy2 2번 index에 3개를 복사.
System.out.println("System.arraycopy(origin, 1, arrCopy2, 2, 3)");
for(int i = 0; i < arrCopy2.length; i++) {
System.out.print(arrCopy2[i] + " ");
}
System.out.println();
}
public void method4() {
// Arrays.copyof()
// * Arrays 클래스 : 배열을 유용하게 사용 할 수 있게 기능을 제공해 주는 클래스
int[] origin = {1, 2, 3, 4, 5};
int[] arrCopy = Arrays.copyOf(origin, origin.length);
System.out.println( Arrays.toString(arrCopy) );
int[] arrCopy2 = Arrays.copyOf(origin, 10);
System.out.println( Arrays.toString(arrCopy2) );
}
}
728x90
반응형
'JAVA' 카테고리의 다른 글
배열 (Overlap) 기본 예제 (0) | 2024.01.22 |
---|---|
배열 정렬 (ArraySort) 기본 예제 (0) | 2024.01.21 |
배열 (Array) 기본 예제 (0) | 2024.01.19 |
분기문 연습 (6) - 연산자를 이용한 계산 프로그램 (0) | 2024.01.18 |
분기문 연습 (5) - 입력 받은 두 수의 공차 구하기 (0) | 2024.01.17 |