重複の可能性:
Javaの==
整数ラッパーオブジェクトでの一貫性のない動作は、値127内でのみ同じインスタンスを共有しますか?
整数オブジェクトの次の==動作を見つけましたが、理解できません。(私はそのような比較にequalsを使用する必要があることをよく知っていますが、私はOCPJPのために勉強しています...)
つまり、==は1000では期待どおりに機能しますが、10では機能しません。
以前のコードの断片は次のとおりです。
Integer i1 = 1000;
Integer i2 = 1000;
if(i1 != i2) System.out.println("different objects");
if(i1.equals(i2)) System.out.println("meaningfully equal");
期待どおりに動作します。
different objects
meaningfully equal
後者はしかし:
Integer i3 = 10;
Integer i4 = 10;
if(i3 == i4) System.out.println("same object");
if(i3.equals(i4)) System.out.println("meaningfully equal");
次の出力があります。
same object
meaningfully equal
誰かがこれが起こっている理由を説明できますか?