- == 연산자는 두 개의 객체가 메모리상에서 동일한 위치에 저장되어 있는지를 비교한다. 이때, 비교하는 것은 객체의 내용이 아니라 참조하는 메모리 주소 값이다.
- equals() 메서드는 두 객체가 내용이 같은지를 비교한다. 이때, 비교하는 것은 객체의 내용이며, 기본적으로 Object 클래스의 equals() 메서드는 == 연산자와 같은 결과를 리턴하게 된다. (동일한 위치에 저장되어 있음으로) 그러나 equals() 메서드는 사용자가 원하는 대로 재정의할 수 있다.
예를 들어, String 클래스에서는 equals() 메서드가 두 문자열의 내용이 같은지를 비교하도록 재정의되어 있다. 따라서 String 객체를 비교할 때는 == 연산자 대신에 equals() 메서드를 사용해야 한다.
== 연산자와 equals() 메서드의 차이를 보여주는 예시
String a = new String("hello");
String b = new String("hello");
String c = a;
// == 연산자는 참조하는 메모리 주소 값을 비교
System.out.println(a == b); // false
System.out.println(a == c); // true
// equals() 메서드는 객체의 내용을 비교
System.out.println(a.equals(b)); // true
System.out.println(a.equals(c)); // true
'JAVA' 카테고리의 다른 글
[JAVA] equals()를 재정의 하여 vo 객체 구현 (0) | 2023.03.08 |
---|---|
[JAVA] equals( ) 메소드 (0) | 2023.03.08 |
[JAVA] Map 컬렉션 클래스 (0) | 2023.03.07 |
[JAVA] 반복자 Iterator (0) | 2023.03.07 |
[JAVA] 컬렉션 프레임워크 - ArrayList (0) | 2023.03.07 |