目次
標準的な方法は 2 つあります
名前と年齢を受け入れ、これらの値でインスタンス変数を初期化する Person クラスのコンストラクターを定義します。
main() メソッドでは、同じ名前と年齢の値を持つ 2 つの Person オブジェクトを作成します。
Person クラスでは、hashCode() メソッドをオーバーライドし、Objects.hash() メソッドを使用して、オブジェクトの名前と年齢属性に基づいてハッシュ コードを生成します。
Explanation
解释
输出
结论
ホームページ Java &#&チュートリアル 2 つのオブジェクトを比較する Java プログラム

2 つのオブジェクトを比較する Java プログラム

Aug 31, 2023 pm 03:45 PM
java 比較オブジェクト isequal

###############導入###

Java では、equals() メソッドを使用してオブジェクトを比較できます。このメソッドは、オブジェクトのプロパティに基づいて 2 つのオブジェクトが等しいかどうかを判断します。 Java でオブジェクトを比較する場合、クラス内の equals() メソッドをオーバーライドして、必要なプロパティに基づいて比較が行われるようにすることが非常に重要です。 2 つのオブジェクトを比較する Java プログラム

この Java プログラムは、equals() メソッドをオーバーライドすることによって Person 型の 2 つのオブジェクトを比較し、名前と年齢属性に基づいてそれらを比較します。まず、equals() メソッドを使用してオブジェクトが同じクラスに属しているかどうかを確認し、次に name 属性と age 属性を比較します。両方のプロパティが一致する場合、メソッドは true を返し、オブジェクトが等しいことを示します。いずれかのプロパティが異なる場合、メソッドは false を返し、オブジェクトが等しくないことを示します。

###方法###

標準的な方法は 2 つあります

equals() メソッドを使用する

######カバーされていません######

オーバーライドを使用する
  • hashCode() メソッドとquals() メソッドを使用する
    • 例 1:equals() メソッドのオーバーライド
    • クラスでequals()メソッドをオーバーライドすると、オブジェクトのプロパティに基づいたカスタム比較が可能になります。

      ###方法###

    最初に、name と age という 2 つのプライベート インスタンス変数を含む Person クラスを定義します。
  • 名前と年齢を受け入れ、これらの値でインスタンス変数を初期化する Person クラスのコンストラクターを定義します。

名前と年齢に基づいて 2 つの Person オブジェクトを比較するために、Person クラスの equals() メソッドをオーバーライドしました。 equals() メソッドは Object パラメータを受け入れます。最初に、パラメータが空でなく、Person クラスのインスタンスであるかどうかを確認します。次に、そのオブジェクトを Person オブジェクトに変換し、その名前と年齢のプロパティを現在のオブジェクトの名前と年齢のプロパティと比較します。

    main() メソッドでは、名前と年齢の値が異なる 2 つの Person オブジェクトを作成します。
  • 最初の Person オブジェクトで equals() メソッドを呼び出し、2 番目の Person オブジェクトをパラメータとして渡します。 equals() メソッドは、2 つのオブジェクトが等しいかどうかを示すブール値を返します。
  • 最後に、System.out.println() を使用して比較結果をコンソールに出力します
  • リーリー
  • 説明
  • の中国語訳は次のとおりです:

    説明

  • この例では、名前と年齢が異なる 2 つの Person オブジェクトを作成し、最初のオブジェクトの equals メソッドを呼び出して、2 番目のオブジェクトと比較します。 equals メソッドは Person クラスで定義されており、両方のオブジェクトが同じ名前と年齢プロパティを持つかどうかを確認します。最後に、比較の結果をコンソールに出力します。
  • ###出力### リーリー

    例 2:equals() メソッドをオーバーライドしない

  • quals() メソッドはオーバーライドされず、オブジェクトはプロパティではなく参照に基づいて比較されます。
  • ###方法###

  • 最初に、name と age という 2 つのプライベート インスタンス変数を含む Person クラスを定義します。

名前と年齢を受け入れ、これらの値でインスタンス変数を初期化する Person クラスのコンストラクターを定義します。

main() メソッドでは、同じ名前と年齢の値を持つ 2 つの Person オブジェクトを作成します。

最初の Person オブジェクトで equals() メソッドを呼び出し、2 番目の Person オブジェクトをパラメータとして渡します。 Person クラスの equals() メソッドをオーバーライドしていないため、Object クラスから継承された equals() メソッドのデフォルトの実装が使用されます。実装は、2 つのオブジェクトが同じオブジェクトである (つまり、同じメモリ アドレスを持つ) かどうかをチェックし、同じである場合は true を返します。 person1 オブジェクトと person2 オブジェクトのメモリ アドレスは異なるため、equals() メソッドは false を返します。

    最後に、System.out.println() を使用して比較結果をコンソールに出力します。
  • リーリー
  • 説明
  • の中国語訳は次のとおりです:

    説明

  • この例では、名前と年齢が同じ 2 つの Person オブジェクトを作成し、equals メソッドを呼び出して最初のオブジェクトと 2 番目のオブジェクトを比較します。 Person クラスの equals メソッドをオーバーライドしていないため、Object クラスから継承されたデフォルトの実装が使用されます。この実装は、2 つのオブジェクトが同じオブジェクトである (つまり、同じメモリ アドレスを持つ) かどうかをチェックし、そうである場合は true を返します。 person1 オブジェクトと person2 オブジェクトのメモリ アドレスが異なるため、equals メソッドは false を返します。最後に、比較の結果をコンソールに出力します。
  • ###出力### リーリー

    例 3: hashCode() メソッドとquals() メソッドの使用

  • quals() メソッドはオーバーライドされず、オブジェクトはプロパティではなく参照に基づいて比較されます。
  • ###方法###

  • パーソン クラスの 2 つのオブジェクト、person1 と person2 を作成しました。名前と年齢は同じです。
  • 次に、person1 で hashCode() メソッドとquals() メソッドを呼び出します。

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在实现自定义比较逻辑方面提供的灵活性。

    以上が2 つのオブジェクトを比較する Java プログラムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

    ホットAIツール

    Undresser.AI Undress

    Undresser.AI Undress

    リアルなヌード写真を作成する AI 搭載アプリ

    AI Clothes Remover

    AI Clothes Remover

    写真から衣服を削除するオンライン AI ツール。

    Undress AI Tool

    Undress AI Tool

    脱衣画像を無料で

    Clothoff.io

    Clothoff.io

    AI衣類リムーバー

    AI Hentai Generator

    AI Hentai Generator

    AIヘンタイを無料で生成します。

    ホットツール

    メモ帳++7.3.1

    メモ帳++7.3.1

    使いやすく無料のコードエディター

    SublimeText3 中国語版

    SublimeText3 中国語版

    中国語版、とても使いやすい

    ゼンドスタジオ 13.0.1

    ゼンドスタジオ 13.0.1

    強力な PHP 統合開発環境

    ドリームウィーバー CS6

    ドリームウィーバー CS6

    ビジュアル Web 開発ツール

    SublimeText3 Mac版

    SublimeText3 Mac版

    神レベルのコード編集ソフト(SublimeText3)

    Javaの平方根 Javaの平方根 Aug 30, 2024 pm 04:26 PM

    Java の平方根のガイド。ここでは、Java で平方根がどのように機能するかを、例とそのコード実装をそれぞれ示して説明します。

    Javaの完全数 Javaの完全数 Aug 30, 2024 pm 04:28 PM

    Java における完全数のガイド。ここでは、定義、Java で完全数を確認する方法、コード実装の例について説明します。

    Javaのアームストロング数 Javaのアームストロング数 Aug 30, 2024 pm 04:26 PM

    Java のアームストロング番号に関するガイド。ここでは、Java でのアームストロング数の概要とコードの一部について説明します。

    Java の乱数ジェネレーター Java の乱数ジェネレーター Aug 30, 2024 pm 04:27 PM

    Java の乱数ジェネレーターのガイド。ここでは、Java の関数について例を挙げて説明し、2 つの異なるジェネレーターについて例を挙げて説明します。

    ジャワのウェカ ジャワのウェカ Aug 30, 2024 pm 04:28 PM

    Java の Weka へのガイド。ここでは、weka java の概要、使い方、プラットフォームの種類、利点について例を交えて説明します。

    Javaのスミス番号 Javaのスミス番号 Aug 30, 2024 pm 04:28 PM

    Java のスミス番号のガイド。ここでは定義、Java でスミス番号を確認する方法について説明します。コード実装の例。

    Java Springのインタビューの質問 Java Springのインタビューの質問 Aug 30, 2024 pm 04:29 PM

    この記事では、Java Spring の面接で最もよく聞かれる質問とその詳細な回答をまとめました。面接を突破できるように。

    Java 8 Stream Foreachから休憩または戻ってきますか? Java 8 Stream Foreachから休憩または戻ってきますか? Feb 07, 2025 pm 12:09 PM

    Java 8は、Stream APIを導入し、データ収集を処理する強力で表現力のある方法を提供します。ただし、ストリームを使用する際の一般的な質問は次のとおりです。 従来のループにより、早期の中断やリターンが可能になりますが、StreamのForeachメソッドはこの方法を直接サポートしていません。この記事では、理由を説明し、ストリーム処理システムに早期終了を実装するための代替方法を調査します。 さらに読み取り:JavaストリームAPIの改善 ストリームを理解してください Foreachメソッドは、ストリーム内の各要素で1つの操作を実行する端末操作です。その設計意図はです

    See all articles