[JAVA]equals() vs ==

2024. 9. 8. 15:35·Language/JAVA

equals()

equals() 메소드는 기본적으로 Object 클래스에 정의되어 있으며, 기본 구현에서는 ==와 같이 객체의 메모리 주소를 비교하지만, 대부분의 경우 오버라이딩을 통해 객체의 내용 비교에 사용된다.

예를 들어, String 클래스에서는 equals() 메소드가 문자열의 실제 내용을 비교하도록 오버라이딩되어 있다.

public class Main {
    public static void main(String[] args) {
    
        // 두 개의 String 객체를 new 키워드를 사용하여 생성
        String str1 = new String("hello");
        String str2 = new String("hello");

        // 두 객체가 같은 내용을 갖는지 확인
        System.out.println(str1.equals(str2)); //true (내용 비교)

    }
}

==

== 연산자는 기본 데이터 타입(primitive types)에서는 실제 값을 비교하지만, 객체 타입(reference types)에서는 두 객체가 같은 메모리 위치를 가리키는지 메모리 주소를 비교한다.

예를 들어, new 키워드를 사용하여 생성된 두 객체는 동일한 내용을 갖더라도 서로 다른 메모리 주소를 가지므로 == 연산자는 false를 반환한다.

public class Main {
    public static void main(String[] args) {
    
        //두 개의 String 객체를 new 키워드를 사용하여 생성
        String str1 = new String("hello");
        String str2 = new String("hello");
        
        //두 객체가 동일한 메모리 주소를 가리키는지 확인
        System.out.println(str1 == str2); //false (주소 비교)
    }
}

결론

equals()는 객체의 내용을 비교하여 객체가 논리적으로 같은지 판단하는 데 주로 사용되고, ==는 객체의 주소를 비교하여 두 변수가 같은 객체를 참조하는지 판단하는 데 주로 사용된다.

'Language > JAVA' 카테고리의 다른 글

[JAVA]정적 메소드에서 this를 사용할 수 없는 이유  (2) 2024.11.03
[JAVA]Runnable 인터페이스를 구현해서 스레드를 만드는 이유  (0) 2024.09.28
[JAVA]예외(Exception) vs 에러(Error)  (0) 2024.09.21
[JAVA]currentThread()  (0) 2024.09.21
[JAVA]문자열 상수 풀(String Pool)  (0) 2024.09.08
'Language/JAVA' 카테고리의 다른 글
  • [JAVA]Runnable 인터페이스를 구현해서 스레드를 만드는 이유
  • [JAVA]예외(Exception) vs 에러(Error)
  • [JAVA]currentThread()
  • [JAVA]문자열 상수 풀(String Pool)
yxxjxxeee
yxxjxxeee
  • yxxjxxeee
    공부 일지
    yxxjxxeee
  • 전체
    오늘
    어제
    • study N
      • Framework
        • Spring
      • Language
        • JavaScript
        • C | C++
        • JAVA
        • PHP
      • CS
        • 네트워크
        • 자료구조
        • 데이터베이스
        • 운영체제
      • DBMS
        • MySQL
      • 코딩테스트 N
        • 백준 N
        • 프로그래머스
        • LeetCode
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 쇼핑몰 제작 프로젝트(PHP)
    • github
  • 공지사항

  • 인기 글

  • 최근 글

  • hELLO Designed By 정상우
    Version v4.10.2
yxxjxxeee
[JAVA]equals() vs ==
상단으로

티스토리툴바