어제 오늘 내일

[Java 기초] Arrays.equals()로 배열 비교하기 본문

IT/Java

[Java 기초] Arrays.equals()로 배열 비교하기

hi.anna 2025. 8. 28. 00:47

자바에서 배열을 비교할 때 흔히 == 연산자를 쓰는 경우가 많습니다.
하지만 배열에서 ==주소(참조) 비교이기 때문에, 내용이 같더라도 false가 나올 수 있습니다.

이럴 때 바로 Arrays.equals() 메서드를 사용하면 배열의 **내용(값)**을 비교할 수 있습니다.

 

1. Arrays.equals()란?

  • Arrays.equals()두 배열의 길이와 요소가 같은지 비교합니다.
  • 배열의 참조(주소)가 아니라, 내부 요소 값 기준으로 동등 여부를 판단합니다.
  • 비교 대상: 기본형 배열(int[], double[] 등), 객체 배열(String[], Integer[] 등)

👉 true 또는 false를 반환합니다.

 

2. 잘못된 비교 예시 (== 연산자)

public class WrongComparison {
    public static void main(String[] args) {
        int[] arr1 = {1, 2, 3};
        int[] arr2 = {1, 2, 3};

        System.out.println(arr1 == arr2); // 주소 비교
    }
}

실행 결과

false

👉 값이 같아도, 두 배열은 서로 다른 객체이므로 ==false를 반환합니다.

 

3. 올바른 비교 – Arrays.equals()

import java.util.Arrays;

public class EqualsExample1 {
    public static void main(String[] args) {
        int[] arr1 = {1, 2, 3};
        int[] arr2 = {1, 2, 3};

        System.out.println(Arrays.equals(arr1, arr2));
    }
}

실행 결과

true

👉 배열의 길이가 같고, 모든 요소가 동일하기 때문에 true가 나옵니다.

 

4. 길이나 값이 다른 경우

import java.util.Arrays;

public class EqualsExample2 {
    public static void main(String[] args) {
        int[] arr1 = {1, 2, 3};
        int[] arr2 = {1, 2, 4};
        int[] arr3 = {1, 2};

        System.out.println(Arrays.equals(arr1, arr2)); // 값 다름
        System.out.println(Arrays.equals(arr1, arr3)); // 길이 다름
    }
}

실행 결과

false
false

👉 길이가 다르거나 값이 다르면 무조건 false입니다.

 

5. 문자열 배열 비교

import java.util.Arrays;

public class EqualsExample3 {
    public static void main(String[] args) {
        String[] fruits1 = {"Apple", "Banana"};
        String[] fruits2 = {"Apple", "Banana"};
        String[] fruits3 = {"Banana", "Apple"};

        System.out.println(Arrays.equals(fruits1, fruits2));
        System.out.println(Arrays.equals(fruits1, fruits3));
    }
}

실행 결과

true
false

👉 순서까지 동일해야 true입니다.

 

6. 2차원 배열 비교 – 주의!

Arrays.equals()1차원 배열만 올바르게 비교합니다.
다차원 배열에서는 내부 배열의 참조를 비교하기 때문에 주의해야 합니다.

import java.util.Arrays;

public class EqualsExample4 {
    public static void main(String[] args) {
        int[][] arr1 = {{1, 2}, {3, 4}};
        int[][] arr2 = {{1, 2}, {3, 4}};

        System.out.println(Arrays.equals(arr1, arr2));
    }
}

실행 결과

false

👉 내부 배열(참조)이 다르므로 false가 나옵니다.

 

7. 다차원 배열 비교 – Arrays.deepEquals()

다차원 배열은 Arrays.deepEquals()를 사용해야 합니다.

import java.util.Arrays;

public class DeepEqualsExample {
    public static void main(String[] args) {
        int[][] arr1 = {{1, 2}, {3, 4}};
        int[][] arr2 = {{1, 2}, {3, 4}};

        System.out.println(Arrays.deepEquals(arr1, arr2));
    }
}

실행 결과

true

👉 다차원 배열은 꼭 deepEquals()를 사용해야 올바른 결과가 나옵니다.

 

8. 정리

  • == → 주소 비교 (내용이 같아도 false)
  • Arrays.equals() → 1차원 배열의 값 비교
  • Arrays.deepEquals() → 다차원 배열의 값 비교

배열 내용 비교는 Arrays.equals(), 다차원 배열은 Arrays.deepEquals()!

 

 

반응형
Comments