본문 바로가기
Java

자바 배열 복사

by 코딩로그 2022. 8. 10.

자바에서 배열을 복사할때 사용하는 메서드에 대해서 알아보자!

이에 앞서 깊은 복사, 얕은 복사에 대해 설명하겠습니다.

 

1. 깊은 복사

  • 깊은 복사 : 새로운 메모리 공간에 값을 복사합니다.
  • 여러 개의 객체가 생성하여 메모리 공간을 사용하게 되므로  메모리 측면에서 비효율적일 수 있다.

2. 얕은 복사

  • 얕은 복사 : 복사하려는 배열의 주소값을 가져온다.
  • 얕은 복사를 사용하는 이유
    • 같은 객체를 공유하므로 메모리를 절약할 수 있다.
    • 단, 의도와는 다르게 여러 개의 객체가 동시에 수정될 수 있다는 단점이 있습니다.

 

3. System.arraycopy 메서드

  • 이 메서드를 통해 깊은 복사가 이루어진다.
  • src배열을 dest배열 지정된 destPos 위치에 복사합니다.
  • System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length);

아래와 같은 코드를 통해 확인해볼 수 있다.

import java.util.Arrays;

public class ArrayCopyTest {
	public static void main(String[] args) {
		
		int[][] original = {{1,2,3}, {4,5,6}, {7,8,9}, {10,11,12}};
		int[][] copy = new int[original.length][original[0].length];
		
		for(int i = 0; i < original.length; i++) {
			System.arraycopy(original[i], 0, copy[i], 0, original[i].length);
		}
		
		for (int i = 0; i < copy.length; i++) {
			for (int j = 0; j < copy[i].length; j++) {
				System.out.print(copy[i][j] + " ");
			}
			System.out.println();
		}
		
	}
}

 

 

실행결과

'Java' 카테고리의 다른 글

[JAVA] StringBuilder  (0) 2022.08.19
Comparable 인터페이스, Comparator 인터페이스  (0) 2022.08.05
자바 StringTokenizer  (0) 2022.08.04
[JAVA]문자열 결합  (0) 2022.08.02
JAVA Stream  (0) 2022.07.31