자바 기본 문법 – 배열 – 2 – 배열의 복사와 비교

자바 기본 문법 - 배열 - 2 - 배열의 복사와 비교
자바 기본 문법 – 배열 – 2 – 배열의 복사와 비교

자바 기본 문법 – 배열 – 2 – 배열의 복사와 비교

소제목: 배열의 복사

배열은 많은 데이터를 다룰 때 유용한 자료구조입니다. 배열의 복사는 기존 배열의 내용을 다른 배열에 복사하는 작업을 말합니다. 이를 통해 기존 배열의 내용을 보존하면서 새로운 배열을 생성할 수 있습니다. 배열을 복사하는 방법에는 얕은 복사와 깊은 복사라는 두 가지 방법이 있습니다.

얕은 복사

얕은 복사는 배열의 주소를 복사하는 방식입니다. 즉, 새로운 배열이 기존 배열과 같은 주소를 참조하게 됩니다. 이 경우, 한 배열의 요소를 수정하면 다른 배열의 요소도 함께 변경됩니다. 이는 배열이 참조 타입이기 때문에 발생하는 현상입니다. 예시를 통해 살펴보겠습니다.

int[] array1 = {1, 2, 3};
int[] array2 = array1; // 얕은 복사

array2[0] = 10;

System.out.println(array1[0]); // 출력 결과: 10

위의 예시에서 array2array1과 같은 주소를 가지므로, array2의 첫 번째 요소를 변경하면 array1의 첫 번째 요소도 함께 변경됩니다. 이는 마치 두 개의 학생이 같은 수업을 듣는 것과 유사합니다. 한 학생이 수업 내용을 수정하면 다른 학생도 같은 내용을 보게 됩니다.

깊은 복사

깊은 복사는 배열의 내용을 새로운 메모리 공간에 복사하는 방식입니다. 따라서 새로운 배열은 기존 배열과 다른 주소를 가지게 됩니다. 이 경우, 한 배열의 요소를 수정해도 다른 배열은 영향을 받지 않습니다. 예시를 통해 살펴보겠습니다.

int[] array1 = {1, 2, 3};
int[] array2 = new int[array1.length]; // 깊은 복사

for (int i = 0; i < array1.length; i++) {
    array2[i] = array1[i];
}

array2[0] = 10;

System.out.println(array1[0]); // 출력 결과: 1

위의 예시에서 array2array1의 내용을 복사하여 새로운 배열을 생성하였습니다. 따라서 array2의 첫 번째 요소를 변경해도 array1의 첫 번째 요소는 변경되지 않습니다. 이는 마치 두 개의 학생이 동일한 내용을 가진 교재를 가지고 수업을 듣는 것과 유사합니다. 한 학생이 교재를 수정해도 다른 학생에게는 영향을 주지 않습니다.

소제목: 배열의 비교

배열의 비교는 두 개의 배열이 동일한 내용을 가지고 있는지 확인하는 작업입니다. 자바에서는 배열의 내용을 비교하기 위해 Arrays 클래스의 equals() 메서드를 사용할 수 있습니다.

예시: 배열의 비교

import java.util.Arrays;

int[] array1 = {1, 2, 3};
int[] array2 = {1, 2, 3};
int[] array3 = {1, 2, 4};

boolean isEqual1 = Arrays.equals(array1, array2);
boolean isEqual2 = Arrays.equals(array1, array3);

System.out.println(isEqual1); // 출력 결과: true
System.out.println(isEqual2); // 출력 결과: false

위의 예시에서 Arrays.equals() 메서드를 사용하여 array1array2를 비교하면 true가 반환됩니다. 왜냐하면 두 배열은 동일한 내용을 가지고 있기 때문입니다. 반면, array1array3은 첫 번째 요소가 다르므로 false가 반환됩니다.

비교를 할 때는 배열의 길이도 함께 확인해야 합니다. 배열의 길이가 다르다면 내용이 같더라도 두 배열은 다른 것으로 간주됩니다. 이는 마치 두 개의 목록을 비교할 때, 항목의 내용뿐만 아니라 항목의 개수도 고려하는 것과 비슷합니다.

주의해야 할 점

  • 배열의 복사와 비교 시, 배열의 요소가 참조 타입인 경우 주의해야 합니다. 얕은 복사를 사용하면 복사한 배열과 원본 배열이 같은 객체를 참조하게 됩니다. 따라서 한 배열의 요소를 변경하면 다른 배열도 함께 변경될 수 있습니다. 깊은 복사를 사용하여 객체를 복사하거나, 복사한 배열의 요소를 개별적으로 수정해야 합니다.
  • 배열의 비교 시, 배열의 길이도 함께 확인해야 합니다. 배열의 길이가 다르다면 내용이 같더라도 두 배열은 다른 것으로 간주됩니다.
  • 배열의 복사와 비교에는 라이브러리인 java.util.Arrays의 메서드를 활용할 수 있습니다. 이를 통해 간편하게 배열의 복사와 비교를 수행할 수 있습니다.

이상으로 배열의 복사와 비교에 대한 내용을 알아보았습니다. 자바에서 배열을 다루는 것은 프로그래밍에서 중요한 부분이므로, 이해를 잘 하고 활용할 수 있도록 노력해보세요!

답글 남기기