[Java] 배열 복사 메서드 간단 정리

2025. 7. 15. 17:10·Backend/Java

주요 배열 복사 메서드

Java에서 배열을 복사하는 주요 메서드들을 간단히 정리하면 다음과 같습니다.

 

1. Object.clone()

int[] original = {1, 2, 3, 4, 5};
int[] copy = original.clone();
  • 배열 전체를 깊은 복사하는 가장 보편적인 방법
  • 새로운 메모리 공간에 값을 복사하므로 원본과 독립적

2. Arrays.copyOf()

int[] original = {1, 2, 3, 4, 5};
int[] copy = Arrays.copyOf(original, original.length);
  • 배열을 처음부터 지정한 길이만큼 복사
  • 길이가 원본보다 크면 나머지는 0으로 채워짐
  • Arrays.copyOf() 범위 초과 예시
int[] original = {1, 2, 3};
int[] copy = Arrays.copyOf(original, 5); // 길이 5로 복사
System.out.println(Arrays.toString(copy)); // [1, 2, 3, 0, 0]

3. Arrays.copyOfRange()

int[] original = {1, 2, 3, 4, 5};
int[] copy = Arrays.copyOfRange(original, 1, 4); // [2, 3, 4]
  • 배열의 특정 범위를 복사
  • from은 포함, to는 제외
  • 범위를 넘어서면 0으로 채워짐
  • Arrays.copyOfRange() 범위 초과 예시
int[] original = {1, 2, 3, 4, 5};
int[] copy = Arrays.copyOfRange(original, 2, 8); // 인덱스 2부터 8까지
System.out.println(Arrays.toString(copy)); // [3, 4, 5, 0, 0, 0]

4. System.arraycopy()

int[] original = {1, 2, 3, 4, 5};
int[] copy = new int[original.length];
System.arraycopy(original, 0, copy, 0, original.length);
  • 가장 빠른 성능을 제공하는 메서드
  • 기존 배열에 덮어쓰기 방식으로 복사
  • 매개변수: (원본배열, 원본시작위치, 대상배열, 대상시작위치, 복사길이)

성능 비교

System.arraycopy() > Arrays.copyOf() > Object.clone() 순으로 성능이 좋습니다.


복사 방식

  • 깊은 복사: 새로운 메모리 공간에 값을 복사 (위 모든 메서드)
  • 얕은 복사: 주소값만 복사 (int[] copy = original;)

참조 자료형 배열의 경우 요소 객체까지 복사하려면 각 요소에 대해 별도로 clone() 처리가 필요합니다.

'Backend > Java' 카테고리의 다른 글

[Java] replace()와 replaceAll()의 차이점  (0) 2025.07.22
[Java] 약수의 개수를 구하는 효율적인 알고리즘 정리  (0) 2025.07.16
[Java, String] split() 메서드 정리 - 문자열 자르기  (0) 2025.07.13
[Java, Stack] 왜 Stack이 아닌 Deque로 스택을 구현해야 할까?  (1) 2025.07.10
[Java] StringTokenizer 란?  (0) 2025.07.10
'Backend/Java' 카테고리의 다른 글
  • [Java] replace()와 replaceAll()의 차이점
  • [Java] 약수의 개수를 구하는 효율적인 알고리즘 정리
  • [Java, String] split() 메서드 정리 - 문자열 자르기
  • [Java, Stack] 왜 Stack이 아닌 Deque로 스택을 구현해야 할까?
devoks
devoks
꾸준히 작성해보자!
  • devoks
    ok's 개발 블로그
    devoks
  • 전체
    오늘
    어제
    • 분류 전체보기 (112) N
      • Backend (15)
        • SpringBoot (0)
        • Java (15)
      • Cs (18) N
      • Infra (0)
        • AWS (0)
        • Docker (0)
      • CodingTest (79)
        • Programmers (79)
  • 링크

    • My GitHub
  • 인기 글

  • 태그

    json
    BufferedReader
    codingtest
    StringTokenizer
    effectivejava
    CS
    programmers
    BufferedWriter
    switch
    java
  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
devoks
[Java] 배열 복사 메서드 간단 정리
상단으로

티스토리툴바