java/배열
얕은복사와 깊은복사
june__Park
2021. 3. 23. 10:36
package week2;
public class Day11_4 {
public static void main(String[] args) {
/*
* int num = 10; // new int[5] // 0 1 2 3 4 int arr[] = { 10, 20, 30, 40, 50 };
* // 얕은 복사 : 같은 주소값을 가진다 int arr2[] = arr; arr2[3] = 100;
* System.out.println("arr[3] = " + arr[3]); // 100
* System.out.println("arr2[3] =" + arr2[3]); // 100 System.out.println("arr = "
* + arr); // [I@15db9742 System.out.println("arr2 =" + arr2); // // 깊은 복사 : 다른
* 주소값을 가진다
*/
int num = 10; // new int[5]
// 0 1 2 3 4
int arr[] = { 10, 20, 30, 40, 50 };
// 얕은 복사 : 같은 주소값을 가진다
int arr2[] = arr;
arr2[1] = 500;
System.out.println("==== 얕은 복사 =====");
System.out.println("arr[1] = " + arr[1]); // 100
System.out.println("arr2[1] =" + arr2[1]); // 100
System.out.println("arr = " + arr); // [I@15db9742
System.out.println("arr2 =" + arr2); //
// 깊은 복사 : 다른 주소값을 가진다
// 다른 주소를 가진다 --> 새로운 메모리방을 만들어준다
// new int[5];
int temp[] = new int[arr.length]; // 0 0 0 0 0
for (int i = 0; i < arr.length; i++) {
temp[i] = arr[i];
}
System.out.println("==== 깊은 복사 =====");
arr2 = temp;
temp = null; // 주소 초기값
arr2[3] = 100;
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
System.out.println();
for (int i = 0; i < arr.length; i++) {
System.out.print(arr2[i] + " ");
}
System.out.println();
System.out.println("arr[3] = " + arr[3]); // 30
System.out.println("arr2[3] =" + arr2[3]); // 100
System.out.println("arr = " + arr);
System.out.println("arr2 =" + arr2);
}
}