Beny's Study

05. 배열 복사(얕은복사,깊은복사) 본문

[JAVA]/06.배열

05. 배열 복사(얕은복사,깊은복사)

76beny 2022. 4. 6. 21:34

목차

-배열복사

-얕은복사

-깊은복사


배열복사

 

 


얕은 복사

■ 객체의 주소값만 가져와 참조형 변수에 저장하고 하나의 객체를 두 변수가 참조하는 것.■ 쉽게말해서, 배열의 주소지만 복사하여 동일한 배열을 활용하는 기법예시

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