public class Example {
public static void main(String[] args) {
int[] arr1;
int[] arr2;
int[] arr3;
//실제 주소배정이 이루어진 후 배정된 주소를 포인터라 함
arr1 = new int[]{1, 96,88,100};
arr2 =arr1; //얕은복제 - 주소를 복사해옴
System.out.println(arr1);
System.out.println(arr2);
for(int x:arr1){
System.out.print(x+"\t");
}System.out.println();
for(int x:arr2){
System.out.print(x+"\t");
}System.out.println(); //주소를 복사해와서 값도 똑같다
//System.out.println("arr3 :"+arr3); --arr3는 포인터인 실제 주소를 배정하지 않았으므로 NullPointerException 에러가 뜬다
System.out.println("arr1==arr2 : "+(arr1==arr2)); //arr1의 주소와 arr2의 heap의 주소가 같은가
//인덱스=키
}
}
public class Example4 {
public static void main(String[] args) {
String[] str1 = {"java", "python", "c-language"};
String[] str2 = {"java", "python","c-language"};
String[] str3;
str3 = str2; //얕은복제 : 같은 기억 장소를 가르키고있음(주소만복제)
String[] str4 =new String[5];
System.out.println(str1==str2); //주소비교로 인해 false
System.out.println(str2==str3); //str3주소에 str2주소를 복사한거라 true
System.out.println(str2);
System.out.println(str3);
//깊은복제 : 다른 기억장소를 가르키도록 데이터를 복제(데이터를 heap에 갖고옴)
System.arraycopy(str2, 0, str4, 0, str2.length);//str2의 위치 0번째부터 복사를한다 str4의 0번째부터 붙여넣는다 str2의 길이까지
System.out.println("\n"+str4);
for(String data:str4){
System.out.println(data);
}
}
}