ボクシングされたプリミティブ型の値を == 演算子や != 演算子で直接比較することはできない。なぜならば、これらの演算子はオブジェクトの値ではなく参照を比較するからである。プログラマはこの動作に驚くかもしれない。オートボクシングはいくつかのプリミティブの値をメモ化(memoizeあるいはキャッシュ)しており、参照の比較と値の比較は、メモ化された一部の値に関しては同じ結果を示すことがある。 オートボクシングは、プリミティブ型の値を対応するラッパーオブジェクトで自動的にラップする。Java 言語仕様 の §5.1.7, 「ボクシング変換」には、オートボクシングの際にどのプリミティブ型の値がメモ化されるか記述されている[JLS 2005]。 ボクシング変換の対象となる値 p が true, false, byte, \u0000 から \u007f までの範囲にある char, あるいは -1
![EXP03-J. ボクシングされたプリミティブ型の値の比較に等値演算子を使わない](https://cdn-ak-scissors.b.st-hatena.com/image/square/7dd958779816f7e1a8006230cb8f8f321ee39ab8/height=288;version=1;width=512/https%3A%2F%2Fwww.jpcert.or.jp%2Fcommon%2Fimage%2Fogp_image.jpg)