자바 equals() 메소드와 '==' 연산자 차이

정주영·2024년 12월 9일

자바

목록 보기
9/10

오늘은 자바의 equals 와 == 연산자의 차이에 대해서 알아보자 !

equals()와 ==는 자바에서 객체의 동등성을 비교하는 데 사용되지만, 의미와 사용 목적이 다릅니다. 차이를 구체적으로 이해하기 위해 예제를 중심으로 살펴보겠습니다.

== 연산자

  • 비교 대상: 메모리 주소 (객체의 참조값)
  • 의미: 두 객체가 같은 주소(참조값)를 가리키고 있는지 확인합니다.
  • 용도: 원시 타입 비교, 객체의 참조 비교에 사용합니다.

equals() 메서드

  • 비교 대상: 객체의 논리적 동등성 (값 비교)
  • 의미: 두 객체의 내용이 논리적으로 같은지 확인합니다.
  • 용도: equals()는 기본적으로 Object 클래스에서 정의되어 있으며, Object의 기본 구현은 ==와 동일합니다. 그러나 많은 클래스에서는 이 메서드를 재정의(override)하여 값 비교를 구현합니다.

문자열(String) 비교

  • ==: false → str1과 str2는 다른 객체(서로 다른 메모리 주소를 가짐).
  • equals(): true → 두 객체의 값("Hello")이 같음.

사용자 정의 클래스에서 equals()와 ==

  • 위 코드에서 equals()는 Object 클래스의 기본 구현을 사용하므로, 참조 비교와 동일하게 작동합니다.

equals()를 재정의한 경우

주요 차이점 정리

profile
효율적인 시스템 설계를 고민하며, 확장성과 안정성을 갖춘 백엔드 개발자가 되길 희망합니다.

0개의 댓글