[Java] == vs equals()

원알렉스·2020년 7월 1일
0

Java

목록 보기
6/7
post-thumbnail

== 연산자

  • 항등 연산자(Operator)입니다.
  • 참조 비교(Reference Compariso)
    • 두 객체가 같은 메모리 공간을 가리키는지 확인합니다.
  • 반환 형태: boolean
    • 같은 주소면 true, 그렇지 않으면 false
  • 모든 기본 타입(Primitive Type)에도 적용할 수 있습니다.
public class Test {
  public static void main(String[] args) {
    System.out.println(10 == 20);  // false
    System.out.println('a' == 'b');  // false
    System.out.println('a' == 97.0);  // true
    System.out.println(true == true);  // true
  }
}
  • 참조 타입(Reference Type)에도 적용할 수 있습니다.
    • 이때, 사용하는 객체 인자의 유형간에 호환성이 있어야합니다.
      • 부모-자식 관계, 동일한 클래스
    • 그렇지 않으면 컴파일 오류가 발생합니다.
public class Test {
  public static void main(String[] args) {
    Thread t = new Thread();
    Object o = new Object();
    String s = new String("hello");
    
    System.out.println(t == o);  // false
    System.out.println(o == s);  // false
    System.out.println(t == s);  // 컴파일 오류
  }
}

equals 메소드

  • 객체 비교 메소드입니다.
  • 내용 비교(Content Comparison)
    • 두 객체의 값이 같은지 확인합니다.
    • 즉, 문자열의 데이터/내용을 기반으로 비교합니다.
  • 기본 타입에 대해서는 적용할 수 없습니다.
  • 반환 형태: boolean
    • 같은 내용이면 true, 그렇지 않으면 false
public class Test {
  public static void main(String[] args) {
    String s1 = new String("hello");
    String s2 = new String("hello");
    String s3 = new String("world);
    String s4 = "world";
    
    System.out.println(s1.equals(s2));  // true
    System.out.println(s2.equals(s3));  // false
    System.out.println(s3.equals(s4));  // true
    System.out.println(s3 == s4);  // false
  }
}
profile
Alex's Develog 🤔

0개의 댓글