- Javaのデータ型は、基本データ型と複合データ型の2つのカテゴリに分類できます。equalsメソッドと==の違いも異なります。
-
基本的なデータ型
8つのデータ型:byte、short、char、int、long、float、double、boolean。これらの8つの基本的なデータ型を比較する場合、==がよく使用され、比較はそれらの値が等しいかどうかです。また、equalsメソッドと==はどちらも比較値であり、違いはありません。
-
複合データ型
もクラスです。2つのオブジェクトを==と比較する場合、比較が同じ新しいオブジェクトでない限り、比較はメモリ内の2つのオブジェクトのストレージアドレスであり、この時点で戻り値はtrueです。通常はfalseを返します。JAVAのすべてのクラスは、Objectの基本クラスから継承されます。equalsメソッドはObjectの基本クラスで定義されます。このメソッドの最初の動作は、オブジェクトのメモリアドレスを比較し、複合データタイプ間でequals比較を実行することです。 、equalsメソッドをオーバーライドしなくても、それらの間の比較は、メモリ内のそれらの格納場所のアドレス値に基づいています。
ただし、このメソッドは、String、Integer、Dateなどの一部のライブラリでオーバーライドされています。これらのクラスでは、equalsには、ヒープメモリ内の比較クラスのストレージアドレスの代わりに独自の実装があります。
したがって、一般に、自分で定義したObjectのequalsメソッドも二重等号(==)と比較され、比較後の結果は==の結果と同じになります。値を比較する場合は、クラスのequalsメソッドを書き直す必要があります。
- Eclipseでequalsメソッドをオーバーライドする操作:
- ダブルクリックして、equalsメソッドをオーバーライドする必要があるクラスを入力します
- メニューバーで[ソース]-> [hashCode()とEquals()を生成]をクリックします
- 比較する要素を選択して確認します
- このように、カスタムクラスによって作成されたオブジェクトのequalsメソッドが使用される場合、それは比較されたオブジェクトの要素の値です。