Java에서 객체 비교: == 연산자와 equals() 메서드

Soozoo·2024년 6월 20일

JAVA

목록 보기
15/41

Java에서는 객체를 비교할 때 두 가지 방법을 사용할 수 있습니다: == 연산자와 equals() 메서드. 이 글에서는 이 두 방법의 차이점과 사용 예제를 살펴보겠습니다.

== 연산자와 equals() 메서드의 차이점
== 연산자: 두 객체의 참조(reference)를 비교합니다. 즉, 두 객체가 동일한 메모리 주소를 가리키고 있는지 확인합니다.
equals() 메서드: 두 객체의 내용(content)을 비교합니다. 기본적으로 Object 클래스의 equals() 메서드는 == 연산자와 동일하게 작동하지만, 많은 클래스는 이 메서드를 오버라이드하여 객체의 내용을 비교하도록 구현합니다.
예제 코드 분석
아래 코드는 == 연산자와 equals() 메서드를 사용하여 기본 자료형과 참조 자료형의 비교를 보여줍니다.

package ex04.apiObject;

class Circle {
    int x = 5, y = 5;
}

public class EqualsMain {
    public static void main(String[] args) {
        Circle c1 = new Circle();
        Circle c2 = new Circle();

        // 객체 비교 (참조 비교)
        if(c1 == c2) {
            System.out.println("same");
        } else {
            System.out.println("not same!!");
        }

        // 기본 자료형 비교
        int x = 3, y = 3;
        System.out.println("기본 자료형 비교(stack 영역)");
        if(x == y) {
            System.out.println("same!!");
        } else {
            System.out.println("not same!!");
        }

        // 참조 자료형 비교
        System.out.println("참조자료형 비교");
        String str1 = new String("korea");
        String str2 = new String("korea");

        if(str1 == str2) {
            System.out.println("same!!");
        } else {
            System.out.println("not same!!");
        }

        // equals() 메서드 비교
        System.out.println("** equals() method 비교 **************");
        if(str1.equals(str2)) {
            System.out.println("same!!");
        } else {
            System.out.println("not same!!");
        }
    }
}
객체 비교 (참조 비교)
Circle c1 = new Circle();
Circle c2 = new Circle();

if(c1 == c2) {
    System.out.println("same");
} else {
    System.out.println("not same!!");
}

여기서 c1과 c2는 서로 다른 객체이므로, == 연산자는 false를 반환하고 "not same!!"이 출력됩니다.

기본 자료형 비교

int x = 3, y = 3;
System.out.println("기본 자료형 비교(stack 영역)");
if(x == y) {
    System.out.println("same!!");
} else {
    System.out.println("not same!!");
}

기본 자료형인 int의 경우, 값 자체를 비교하므로 x와 y가 동일한 값을 가지면 true를 반환하고 "same!!"이 출력됩니다.

참조 자료형 비교

String str1 = new String("korea");
String str2 = new String("korea");

if(str1 == str2) {
    System.out.println("same!!");
} else {
    System.out.println("not same!!");
}

str1과 str2는 각각 다른 String 객체를 가리키므로 == 연산자는 false를 반환하고 "not same!!"이 출력됩니다.

equals() 메서드 비교

System.out.println("** equals() method 비교 **************");
if(str1.equals(str2)) {
    System.out.println("same!!");
} else {
    System.out.println("not same!!");
}

String 클래스의 equals() 메서드는 문자열의 내용을 비교하므로 str1과 str2가 동일한 문자열 값을 가지면 true를 반환하고 "same!!"이 출력됩니다.

profile
넙-죽

0개의 댓글