可能重複:
Inconsistent behavior on java's ==
Integer wrapper objects share the same instances only within the value 127?Java的==整數
我已經找到了Integer對象以下==行爲,我看不懂。 (我清楚地知道,應該使用等於這樣的比較,但我對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
是否有人可以解釋爲什麼發生這種情況?
BTW用'-XX嘗試:+ AggressiveOpts',第一個將表現爲第二,作爲它增加了Integer緩存的大小。 ;) – 2012-02-17 11:20:05