자바에서 배열을 복사할때 사용하는 메서드에 대해서 알아보자!
이에 앞서 깊은 복사, 얕은 복사에 대해 설명하겠습니다.
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 |