“hello” == “hello”
but,“hello”.equals(new String(”hello”))
is wrong...
== 는 연산자이지만 equals() 는 최상위클래스(Object) 에 존재하는 메서드이다.
equals()
는 최상위 클래스인 Object 에 존재하는 메서드이다.
따라서 오버라이딩을 통한 수정 또한 가능하다.
그러나, ==
은 비교를 위한 연산자이다.
따라서 오버라이딩을 통한 수정이 불가능하다 (Java 는 연산자 오버라이딩을 지원하지 않는다)
Object.equals() 메서드는 대상이 가진 값을 비교하지만,
== 연산자는 대상의 주소값을 비교한다.
또한, equals() 는 오버라이딩이 가능하므로, 하위 클래스에서 논리적 동치성을 기반으로 equals 를 재정의 할 수 있다.
로우레벨에서의 동작 원리는 링크 참조