Javaequalsメソッドと==の違い

  • Javaのデータ型は、基本データ型と複合データ型の2つのカテゴリに分類できます。equalsメソッドと==の違いも異なります。
  1. 基本的なデータ型
    8つのデータ型:byte、short、char、int、long、float、double、boolean。これらの8つの基本的なデータ型を比較す​​る場合、==がよく使用され、比較はそれらの値が等しいかどうかです。

    また、equalsメソッドと==はどちらも比較値であり、違いはありません。

  2. 複合データ型
    もクラスです。2つのオブジェクトを==と比較する場合、比較が同じ新しいオブジェクトでない限り、比較はメモリ内の2つのオブジェクトのストレージアドレスであり、この時点で戻り値はtrueです。通常はfalseを返します。

    JAVAのすべてのクラスは、Objectの基本クラスから継承されます。equalsメソッドはObjectの基本クラスで定義されます。このメソッドの最初の動作は、オブジェクトのメモリアドレスを比較し、複合データタイプ間でequals比較を実行することです。 、equalsメソッドをオーバーライドしなくても、それらの間の比較は、メモリ内のそれらの格納場所のアドレス値に基づいています。

    ただし、このメソッドは、String、Integer、Dateなどの一部のライブラリでオーバーライドされています。これらのクラスでは、equalsには、ヒープメモリ内の比較クラスのストレージアドレスの代わりに独自の実装があります。

    したがって、一般に、自分で定義したObjectのequalsメソッドも二重等号(==)と比較され、比較後の結果は==の結果と同じになります。値を比較する場合は、クラスのequalsメソッドを書き直す必要があります。

  • Eclipseでequalsメソッドをオーバーライドする操作:
    1. ダブルクリックして、equalsメソッドをオーバーライドする必要があるクラスを入力します
    2. メニューバーで[ソース]-> [hashCode()とEquals()を生成]をクリックします
    3. 比較する要素を選択して確認しますここに画像の説明を挿入
    4. このように、カスタムクラスによって作成されたオブジェクトのequalsメソッドが使用される場合、それは比較されたオブジェクトの要素の値です。ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/cys975900334/article/details/106585823