본문 바로가기
[Java] 자바 기초

[Java] 배열 복사

by codeomni 2024. 3. 18.
반응형

 

안녕하세요. 개발자 블로그 codeomni입니다.

 

이번 포스팅은 자바에서 배열의 복사입니다.

배열은 자료구조 특성상 크기가 고정되어 있으므로 확장할 경우에 새로운 공간을 추가하고 기존에 있던 항목들을 가져와야합니다.

자바에서는 배열의 항목을 복사하는 방법으로 for문을 통한 방법과 System.array.copy() 메소드를 사용하는 방법이 있습니다.

 

주의점

복사한 값을 제외한 나머지 배열의 원소들은 배열의 자료형의 초기값입니다.

참조 타입의 배열은 주소값을 복사하므로 원본 배열과 새배열은 같은 객체를 참조합니다. (얕은 복사[shallow copy]) 따라서 배열의 내부 객체가 변경되면 원본과 복사본 모두 영향을 받게 됩니다.

 

1. for문으로 배열 복사

원본 배열과 복사한 배열의 인덱스로 접근해서 원소를 복사하는 방법입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import java.util.Arrays;
 
public class Example {
    public static void main(String[] args) {
        int[] originalArray = {123};
        int[] copiedArray = new int[5];
        
        for (int i = 0; i < originalArray.length; i++) {
            copiedArray[i] = originalArray[i];
        }
        
        System.out.println("복사된 배열:");
        for (int i = 0; i < copiedArray.length; i++) {
            System.out.println("copiedArray[" + i + "] = " + copiedArray[i]);
        }
    }
}

 

2. System.arraycopy() 메소드 사용

배열의 특정 범위의 요소들을 다른 배열로 복사할 때 유용합니다.

1
2
3
4
5
6
7
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
 
// src: 복사할 원본 배열
// srcPos: 원본 배열에서 복사를 시작할 위치(인덱스)
// dest: 복사된 요소들을 저장할 대상 배열
// destPos: 대상 배열에서 복사를 시작할 위치(인덱스)
// length: 복사할 요소의 개수

System.arraycopy() 메소드를 사용하는 방법과 주요 매개변수입니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package test;
 
public class Example {
    public static void main(String[] args) {
        int[] originalArray = {123};
        int[] copiedArray = new int[5];
        
        System.arraycopy(originalArray, 0, copiedArray, 0, originalArray.length);
        
        System.out.println("복사된 배열:");
        for (int i = 0; i < copiedArray.length; i++) {
            System.out.println("copiedArray[" + i + "] = " + copiedArray[i]);
        }
    }
}

 

댓글