本文へジャンプ
  • ながの子育て応援宣言
  • 行動宣言募集
  • 婚活サポーター募集中
  • 婚活の秘訣
  • ながの結婚支援ネットワーク

投稿

자바 equals 예제

2019年8月2日

두 번째 equals() 메서드 비교에서 해시코드() 메서드는 재정의Homer 변수에 대해 재정의됩니다. 이름은 두 Simpson 개체에 대해 “Homer”이지만 해시 코드() 메서드는 재정의된 Homer에 대해 다른 값을 반환합니다. 이 경우 메서드에 해시 코드와의 비교가 포함되어 있으므로 equals() 메서드의 최종 결과는 false입니다. 다음은 두 문자열이 equals()) 및 equalsIgnoreCase() 메서드를 사용하여 비교되는 예입니다. 이 두 문자열은 명령 프롬프트에 사용자가 입력하고 우리는 그들을 읽을 스캐너 클래스를 사용하고 있습니다. Java SE는 해시코드() 메서드에 대한 계약도 정의합니다. 이를 자세히 살펴보면 해시코드()와 equals()가 얼마나 밀접하게 관련되어 있는지 를 보여 주며, 이 에 대해 자세히 살펴보십시오. 이 예제는 모든 개체에 대해 같음을 테스트하는 유용한 제네릭 equals() 메서드를 작성할 수 없다는 것을 보여 주기 때문에 특히 흥미롭습니다. 두 개체의 모든 필드의 같음만 테스트하는 것만으로는 충분하지 않습니다. 자동차의 속도를 변경하는 것이 언급 된 실제 자동차를 변경하지 않는이 예에서와 같이 일부 필드는 평등에 대한 테스트와 관련이없을 수 있습니다.

Object 클래스에 대한 Java SE 문서의 정확한 기준을 조회할 수 있습니다. 이 예제에서는 String 클래스의 3 개의 새 인스턴스를 만들었습니다. 그 중 두 개는 동일한 개체(s1 및 s3)에 대한 참조이며, 다른 두 개체는 동일한 콘텐츠를 가지고 있지만 다른 개체(s1 및 s2)입니다. 보시다시피 == 연산자는 개체가 메모리의 내용을 확인하지 않고 메모리의 동일한 주소를 참조하는 경우에만 true를 반환합니다. 반면에 equals() 메서드는 메모리 주소에 대해 신경 쓰지 않습니다. 참조가 아닌 개체의 값을 검사합니다. 출력은 다음과 같습니다: 그리고 이제 는 계약이 요구하는 대로 대칭적으로 작동합니다. 그 이유는 Java가 Person.equals(Object)(ID를 확인하는 Object에서 상속된 대로)라고 하기 때문입니다. 왜? 구체적인 클래스를 확장하고 새 중요한 필드를 추가하면 어떻게 됩니까? 조슈아 블로흐에 의해 효과적인 자바에 따르면, 그것은 새로운 클래스에 대한 완벽하게 올바른 동등한 방법을 작성하는 것은 불가능하다. 대신 상속 대신 컴포지션을 사용해야 합니다. 아시다시피 재정의하는 것은 사용자 지정 비즈니스와 같음()으로 Java가 두 Student 개체를 비교할 때 ID 특성을 고려하도록 합니다.

마지막으로 equals()는 개체의 필드를 비교합니다. 두 개체에 동일한 필드 값이 있는 경우 개체는 동일합니다. WEB4J 도구에는 같음 구현을 위한 유틸리티 클래스가 있습니다. 다음은 WEB4J로 구현된 모델 개체의 예입니다. 클래스 Object에서 equals()의 기본 구현은 같음이 개체 ID와 동일하다고 말합니다. 그리고 수입과 지출은 두 가지 별개의 사례입니다. 우리는 소득을 기대할 것입니다.동등한 (비용) 사실 반환. 그러나 현재의 형태로 Money 클래스로, 그것은하지 않습니다. 모든 Java 클래스의 기본 측면은 평등의 정의입니다. 클래스의 equals 메서드에 의해 결정 되며 올바른 구현에 대 한 고려해 야 할 몇 가지가 있다.

グローバルメニューへジャンプ

ページのトップへ