2つの大きな型に分けられます。
それゆえに、同値性と同一性という、
紛らわしい概念が出てきます。
いろいろクラスを作って、
==やequalsを実験してみたけど、
falseばっかり返って来て、たまにtrueが返ってくる。
いまいち法則性が分からない。
あなたもそう思っていませんか?
この界隈はOCJ-Pで非常に狙われやすいですし、
オブジェクト指向の型というシステム上、
とても重要なところなので、しっかりと整理しておきましょう。
肝心なことはたった1つです!!!
オペランド(比較する対象)が、
プリミティブ型か参照型かを確認する。
ということ。
下の図にまとめました。

同値性という言葉は、プリミティブ型の比較のとき。
同一性という言場は、参照型を比較するときに使います。
プリミティブ型を比較するときは、==しか使えません。
同一性を比較するときは、==もequalsも使えますが、
ともに同一性の比較になります。
オペランドの型に着目しましょう。
OCJ-Pでは、それで解決できます^^