728x90
System.arraycopy( ) 배열복사

 

ex)

System.arraycopy(src(원본), srcPos(원본 시작위치 설정), dest(값을 담을 배열), 
		destPos(배열 위치  설정), length(담을 길이 설정));

 


여러종류의 복사 방법

 

얕은 복사

 

객체의 주소값이 복사된 배열복사

원본 배열이 변경되면 복사된 배열 또한 변경된다.

 

ex)

int[] arr01 = {10, 20, 30};
int[] arr02 = new int[3];			//[0, 0, 0]

arr02 = arr01;
System.out.println(Arrays.toString(arr02));

arr01[0] = 100;
System.out.println(Arrays.toString(arr02));

[실행결과]

[10, 20, 30]
[100, 20, 30]


깊은 복사

 

객체의 값이 복사된 배열복사

원본 배열이 변경되어도 복사된 배열은 변경되지 않는다.

 

ex)

<For>

int[] arr01 = {10, 20, 30};
int[] arr02 = new int[3];			//[0, 0, 0]

for (int i = 0; i < arr02.length; i++) {
	arr02[i] = arr01[i];
}
	
arr01[0] = 100;

System.out.println(Arrays.toString(arr01));
System.out.println(Arrays.toString(arr02));

[실행결과]

[100, 20, 30]
[10, 20, 30]

 

 

<ArrayCopy>

int[] arr01 = {10, 20, 30};
int[] arr02 = new int[10];			//[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
	        
System.arraycopy(arr01, 0, arr02, 1, arr01.length);
		
arr01[0] = 100;

System.out.println(Arrays.toString(arr01));
System.out.println(Arrays.toString(arr02));

[실행결과]

[100, 20, 30]
[0, 10, 20, 30, 0, 0, 0, 0, 0, 0]

 

 

<Clone>

int[] arr01 = {10, 20, 30};
int[] arr02 = new int[10];
		
System.out.println(Arrays.toString(arr02));
		
arr02 = arr01.clone();				
arr01[0] = 100;
		
System.out.println(Arrays.toString(arr01));
System.out.println(Arrays.toString(arr02));

[실행결과]

[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[100, 20, 30]
[10, 20, 30]

'JAVA' 카테고리의 다른 글

Date / Calendar / SimpleDateFormat  (0) 2021.07.14
동적 가변 배열 (DynamicArray)  (0) 2021.07.13
isDigit  (0) 2021.07.11
charAt  (0) 2021.07.09
toUpperCase와 toLowerCase  (0) 2021.07.09

+ Recent posts