Beny's Study
05. 배열 복사(얕은복사,깊은복사) 본문
목차
-배열복사
-얕은복사
-깊은복사
배열복사
얕은 복사
■ 객체의 주소값만 가져와 참조형 변수에 저장하고 하나의 객체를 두 변수가 참조하는 것.■ 쉽게말해서, 배열의 주소지만 복사하여 동일한 배열을 활용하는 기법■ 예시
package com.kh.ex03.SearchArray;
import java.util.Arrays;
public class ArrayCopy {
public static void main(String[] args) {
int[] array1 = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, };
int[] array2 = array1; // 얕은 복사 Shallow copy
array1[1] = 10;
System.out.println(Arrays.toString(array1));
System.out.println(Arrays.toString(array2));
}
깊은 복사
■ 새로운 배열객체를 생성하여 기존 배열의 데이터를 복사하는것
■ 쉽게말해서,배열의 주소지가 아니고, 실제 배열을 물리적으로 복사하는 기법
■ 이 방법 많이 씀 arr2 = Arrays.copyof(arr1,arr1length);
■ 방법 1 (꼭외우기)
package com.kh.ex03.SearchArray;
import java.util.Arrays;
public class ArrayCopy {
public static void main(String[] args) {
int[] array1 = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, };
int[] array3 = null;
array3 = Arrays.copyOf(array1, array1.length);
//(array1, array1.length)=(복사할거, 복사할거길이)
}
}
int[] arr={0,1,2,3,4];// 요소는 5개
int[] arr2=Arrays.copyof(arr,arr.length);
//arr.length:복사할 요소의 개수=> (arr,arr.length) =(arr의 ,복사할요소의 개수는?)
//arr2=[0,1,2,3,4]
int[] arr3=Arrays.copyof(arr,3);
//arr3=[0,1,2]
int[] arr4=Arrays.copyof(arr,7);
//arr3=[0,1,2,3,4,0,0]
int[] arr5=Arrays.copyofRange(arr,2,4);
//arr5=[2,3]<-4는 불포함
// 2~4까지 =>4는 불포함
int[] arr6=Arrays.copyofRange(arr,0,7);
//arr6=[0,1,2,3,4,0,0]
■ 방법2 (잘안씀)
package com.kh.ex03.SearchArray;
import java.util.Arrays;
public class ArrayCopy {
public static void main(String[] args) {
int[] array1 = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, };
int[] array3 = null;
array3 = array1.clone();
}
}
■ 방법3 (고전적인방법)
package com.kh.ex03.SearchArray;
import java.util.Arrays;
public class ArrayCopy {
public static void main(String[] args) {
int[] array1 = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, };
array3 = new int[array1.length];
for(int i = 0; i < array1.length; i++) {
array3[i] = array1[i];
}
array1[2] = 1000;
System.out.println(Arrays.toString(array1));
System.out.println(Arrays.toString(array3));
}
}
"본 인터넷 사이트 내의 모든 이미지, 문구, 콘텐츠, 내용 등에 대한 저작권은 76beny에게 있습니다.
이를 무단으로 도용, 복사, 전재, 재배포, 2차 변형 등을 할 경우
민, 형사상 법적 조치 등 저작권법에 의거하여 처벌 받을 수 있습니다."
'[JAVA] > 06.배열' 카테고리의 다른 글
07. 2차원 배열_1(배열선언,배열할당) (0) | 2022.04.06 |
---|---|
06. 배열의 정렬 [Sort()] (0) | 2022.04.06 |
04. 배열의 출력 (0) | 2022.04.06 |
03. 배열의 초기화 (0) | 2022.04.06 |
02. 배열 선언과 생성 (0) | 2022.04.06 |