> Java > java지도 시간 > 본문

두 객체를 비교하는 Java 프로그램

王林
풀어 주다: 2023-08-31 15:45:12
앞으로
1145명이 탐색했습니다.

두 객체를 비교하는 Java 프로그램

소개

Java에서는 객체의 속성을 기반으로 두 객체가 동일한지 여부를 결정하는 객체 비교에 equals() 메서드를 사용할 수 있습니다. Java에서 객체를 비교할 때 클래스의 equals() 메서드를 재정의하여 비교가 필수 속성을 기반으로 하는지 확인하는 것이 매우 중요합니다.

이 Java 프로그램은 name 및 age 속성을 기반으로 equals() 메서드를 재정의하여 Person 유형의 두 개체를 비교합니다. 먼저 equals() 메서드를 사용하여 객체가 동일한 클래스에 속하는지 확인한 다음 name 및 age 속성을 비교합니다. 두 속성이 모두 일치하면 메서드는 true를 반환하여 개체가 동일함을 나타냅니다. 속성 중 하나라도 다른 경우 메서드는 false를 반환하여 개체가 동일하지 않음을 나타냅니다.

방법

두 가지 표준 방법이 있습니다

  • equals() 메소드를 사용하세요

    • 보장되지 않음

    • 오버레이 사용

  • hashCode() 및 equals() 메소드를 사용하세요

예제 1: equals() 메서드 재정의

클래스에서 equals() 메서드를 재정의하면 객체의 속성을 기반으로 사용자 정의 비교가 가능해집니다.

방법

  • 먼저 두 개의 개인 인스턴스 변수인 이름과 나이가 포함된 Person 클래스를 정의합니다.

  • 이름과 나이를 받아들이고 이 값으로 인스턴스 변수를 초기화하는 Person 클래스의 생성자를 정의합니다.

  • 이름과 나이를 기준으로 두 개의 Person 개체를 비교하기 위해 Person 클래스의 equals() 메서드를 재정의했습니다. equals() 메소드는 Object 매개변수를 승인합니다. 먼저 매개변수가 비어 있지 않고 Person 클래스의 인스턴스인지 확인합니다. 그런 다음 해당 객체를 Person 객체로 변환하고 해당 객체의 name 및 age 속성을 현재 객체의 name 및 age 속성과 비교합니다.

  • main() 메소드에서는 이름과 연령 값이 다른 두 개의 Person 객체를 만듭니다.

  • 첫 번째 Person 객체에 대해 equals() 메서드를 호출하고 두 번째 Person 객체를 매개변수로 전달합니다. equals() 메소드는 두 객체가 동일한지 여부를 나타내는 부울 값을 반환합니다.

  • 마지막으로 System.out.println()을 사용하여 비교 결과를 콘솔에 인쇄합니다

으아악

Explanation

의 중국어 번역은

Explanation

입니다.

이 예에서는 이름과 나이가 다른 두 개의 Person 개체를 만든 다음 첫 번째 개체의 equals 메서드를 호출하여 두 번째 개체와 비교합니다. equals 메소드는 Person 클래스에 정의되어 있으며 두 객체 모두 동일한 이름과 연령 속성을 가지고 있는지 확인합니다. 마지막으로 비교 결과를 콘솔에 인쇄합니다.

출력

으아악

예 2: equals() 메서드를 재정의하지 않음

equals() 메서드는 재정의되지 않으며 객체는 속성이 아닌 참조를 기반으로 비교됩니다.

방법

  • 먼저 두 개의 개인 인스턴스 변수인 이름과 나이가 포함된 Person 클래스를 정의합니다.

  • 이름과 나이를 받아들이고 이 값으로 인스턴스 변수를 초기화하는 Person 클래스의 생성자를 정의합니다.

  • main() 메소드에서는 이름과 연령 값이 동일한 두 개의 Person 객체를 생성합니다.

  • 첫 번째 Person 객체에 대해 equals() 메서드를 호출하고 두 번째 Person 객체를 매개변수로 전달합니다. Person 클래스의 equals() 메소드를 재정의하지 않았으므로 Object 클래스에서 상속된 equals() 메소드의 기본 구현이 사용됩니다. 구현에서는 두 객체가 동일한 객체인지(즉, 동일한 메모리 주소를 가지고 있는지) 확인하고, 그렇다면 true를 반환합니다. person1과 person2 객체의 메모리 주소가 다르기 때문에 equals() 메서드는 false를 반환합니다.

  • 마지막으로 System.out.println()을 사용하여 비교 결과를 콘솔에 인쇄합니다.

으아악

Explanation

의 중국어 번역은

Explanation

입니다.

이 예에서는 이름과 나이가 같은 두 개의 Person 개체를 만든 다음 equals 메서드를 호출하여 첫 ​​번째 개체와 두 번째 개체를 비교합니다. Person 클래스의 equals 메소드를 재정의하지 않았으므로 Object 클래스에서 상속된 기본 구현이 사용됩니다. 이 구현은 두 객체가 동일한 객체인지(즉, 동일한 메모리 주소를 가지고 있는지) 확인하고 그렇다면 true를 반환합니다. person1과 person2 객체는 서로 다른 메모리 주소를 가지므로 equals 메소드는 false를 반환합니다. 마지막으로 비교 결과를 콘솔에 인쇄합니다.

출력

으아악

예 3: hashCode() 및 equals() 메서드 사용

equals() 메서드는 재정의되지 않으며 객체는 속성이 아닌 참조를 기반으로 비교됩니다.

방법

  • 우리는 이름과 나이가 같은 Person 클래스의 두 객체인 person1과 person2를 만들었습니다.

  • 그런 다음 person1에서 hashCode() 및 equals() 메서드를 호출합니다.

  • Person 클래스에서는 hashCode() 메서드를 재정의하고 Objects.hash() 메서드를 사용하여 개체의 이름 및 연령 속성을 기반으로 해시 코드를 생성합니다.

  • 然后我们重写equals()方法,根据它们的姓名和年龄属性来比较两个Person对象。该方法首先检查对象是否属于同一类,如果是,则使用Objects.equals()方法检查它们的姓名和年龄属性是否相等。

  • 在main()方法中,我们使用&&运算符通过hashCode()方法检查person1和person2的哈希码是否相同,并且通过equals()方法返回true。

  • 最后,我们打印出一个消息,指示这些对象是否相等。

public class ObjectComparator {
    
   public static void main(String[] args) {
        
      // Create two objects to compare
      Person person1 = new Person("Alice", 25);
      Person person2 = new Person("Alice", 25);
        
      // Compare the two objects using hashCode and equals methods
      boolean areEqual = person1.hashCode() == person2.hashCode() && person1.equals(person2);
      System.out.println("Are the two objects equal? " + areEqual);
   }
}

class Person {
    
   private String name;
   private int age;
    
   public Person(String name, int age) {
      this.name = name;
      this.age = age;
   }
    
   @Override
   public int hashCode() {
      return Objects.hash(name, age);
   }
    
   @Override
   public boolean equals(Object obj) {
      if (this == obj)
         return true;
      if (!(obj instanceof Person))
         return false;
      Person other = (Person) obj;
      return Objects.equals(name, other.name) && age == other.age;
   }
}
로그인 후 복사

Explanation

的中文翻译为:

解释

在这个例子中,我们创建了两个具有相同姓名和年龄的Person对象,然后调用第一个对象的hashCode()和equals()方法来与第二个对象进行比较。

在Person类中,我们重写了hashCode()和equals()方法,以便根据它们的name和age属性来比较对象。hashCode()方法返回name和age属性的组合的哈希码,equals()方法检查对象是否属于同一类,并且具有相同的name和age属性。

最后,我们使用&&运算符来检查两个对象的哈希码是否相同,并且equals()方法是否返回true。如果两个条件都为true,我们打印出对象相等的信息。否则,我们打印出对象不相等的信息。

输出

The two person objects are equal
로그인 후 복사

结论

  • 这个Java程序使用equals()方法来比较两个Person对象的属性,该方法已在Person类中被重写。

  • 该程序展示了定制对象比较的重要性,并突出了Java在实现自定义比较逻辑方面提供的灵活性。

위 내용은 두 객체를 비교하는 Java 프로그램의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:tutorialspoint.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿