可能性の重複のために:私はIntegerオブジェクトに対して次の==動作を発見したと私はそれを理解できない
Inconsistent behavior on java's ==
Integer wrapper objects share the same instances only within the value 127?Javaの==整数
。 1000ではなく、10
前者期待どおりに動作==、短い上
(...私はこのような比較のために等しい1を使用する必要があることは十分承知していますが、私はOCPJPのために勉強しています)
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
誰かが説明していただけますか?
を比較するために、オーバーロードされていないことに注意してください:+ AggressiveOpts'と最初の1のように、第二のように動作しますIntegerキャッシュのサイズが大きくなります。 ;) –