Java

[Java] Equals와 == 의 차이

누구세연 2024. 5. 25. 15:23

Java를 사용하다 보면 데이터나 객체를 비교해야 할 때가 많습니다.

이때 'equals'와 '=='를 어떻게 사용해야 하는지 헷갈리기 쉽습니다. 이 둘은 자주 사용되지만 용도가 다르기 때문에 제대로 이해하고 사용하는 것이 중요합니다. 

'equals'와 '==' 에 대해 알아보겠습니다.

 

'==' 연산자

'==' 연산자는 주로 기본 타입(primitive types) 비교에 사용되며, 참조 타입(reference types) 비교에도 사용됩니다.

 

기본 타입 비교

기본 타입의 값을 비교할 때 '=='를 사용하면 값이 동일한지 여부를 확인할 수 있습니다.

int a = 5;
int b = 5;
System.out.println(a == b); // true,

 

참조 타입 비교

참조 타입에서는 '=='를 사용하여 두 객체가 같은 메모리 주소를 가리키고 있는지를 확인합니다.

String s1 = new String("hello");
String s2 = new String("hello");
System.out.println(s1 == s2); // false, 다른 객체(주소)를 가리키고 있음

 

 

'equals' 메서드

'equals'메서드는 참조 타입의 객체 내용을 비교할 때 사용됩니다.

Object클래스에 정의된 기본 'equals' 메서드는 객체의 주소를 비교하지만, 많은 클래스에서 이 메서드를 오버라이드하여 객체의 논리적 등등성을 비교합니다.

String s1 = new String("hello");
String s2 = new String("hello");
System.out.println(s1.equals(s2)); // true, 내용이 같음

 

동일한 참조 비교

두 변수가 동일한 객체를 가리키는 경우 '=='연산자는 true를 반환합니다.

String s3 = s1;
System.out.println(s1 == s3); // true, 동일한 객체(주소)를 가리킴

 

 

 

요약

  • '==' 연산자는 기본 타입의 값이나 참조 타입의 객체 주소를 비교합니다.
  • 'equals'메서드는 참조 타입의 객체 내용을 비교합니다.
    이를 통해 객체의 논리적 동등성 확인할 수 있습니다.