두 객체가 완전히 같은 경우를 의미, 주소 값이 같음
Stack 에 있는 B와 C는 같은 객체를 참조 즉 B와 C는 동일하다고 말할 수 있음
해당 변수가 동일한지는 == 을 통해서 확인할 수 있다.
추가로 Primitive 타입은 객체가 아니여서 주소가 없음. == 연산자를 사용했을 때 내용이 같으면 동일하다고 함
두 객체가 같은 정보를 가지고 있는 경우
객체의 주소가 서로 다르더라도 내용이 같으면 동등하다고 이야기 할 수 있음
equals
연산자를 통해 판별
public class App {
public static void main(String[] args) {
String str1 = new String("aaa");
String str2 = new String("aaa");
System.out.println(str1 == str2); // false
System.out.println(str1.equals(str2)); // true
}
}
어떠한 객체든 equals 연산자만 사용하면 두 객체에 대한 동등성 판단이 가능한 것은 아니다.
최상단 객체인 Object에 정의 되어 있는 equals() 메소드는 동일성 판단을 하고 있다.
public boolean equals(Object obj) {
return (this == obj);
}
equals 메소드를 자식 메소드에서 재정의 하지 않으면, equals() 연산자는 == 과 같다