프로그래밍 언어/JAVA

Java에서 ==와 equals ()의 차이점

Rateye 2022. 1. 6. 14:58
728x90
반응형
질문 : Java에서 ==와 equals ()의 차이점은 무엇입니까?

이 내용을 올바르게 이해했는지 명확히하고 싶었습니다.

  • == 는 참조 비교입니다. 즉, 두 개체가 동일한 메모리 위치를 가리 킵니다.
  • .equals() 는 객체의 값 비교로 평가됩니다.
답변

일반적으로 귀하의 질문에 대한 대답은 "예"이지만 ...

  • .equals(...) 는 비교하기 위해 작성된 내용 만 비교합니다.
  • 클래스가 equals 메서드를 재정의하지 않으면이 메서드를 재정의 한 가장 가까운 부모 클래스 equals(Object o)
  • 재정의를 제공 한 부모 클래스가 없으면 기본적으로 최종 부모 클래스 인 Object의 메서드가 사용되므로 Object#equals(Object o) 메서드가 남습니다. Object API에 따라 이것은 == 와 같습니다. 즉, 두 변수가 동일한 객체를 참조하는 경우에만 해당 참조가 하나이고 동일한 경우 true를 반환합니다. 따라서 기능적 동등성이 아닌 객체 동등성을 테스트하게됩니다.
  • "계약을 위반"하지 않도록 equals 를 재정의하는 경우 hashCode 를 재정의해야합니다. API에 따라 두 객체에 대해 hashCode() 메서드에서 반환 된 결과는 equals 메서드가 동등 함을 표시하는 경우 동일 해야합니다. 그 반대가 반드시 사실 은 아닙니다.
출처 : https://stackoverflow.com/questions/7520432/what-is-the-difference-between-and-equals-in-java
728x90
반응형