我想了解下面的代碼的行爲,當數值比較運算被用來在Java中比較2個Integer對象物體的比較。Java的自動裝箱,並使用運營商
Integer i1 = new Integer(1);
Integer i2 = new Integer(1);
System.out.println(i1 == i2);
System.out.println(i1 > i2);
System.out.println(i1 >= i2);
上面的代碼的輸出是:
false
false
true
我明白了什麼是發生在第一種情況下(對象實例的比較時這就是爲什麼它給假)。但爲什麼第二種和第三種情況是不同的,它是如何工作的?
我對你的結果感到困惑。我認爲JLS需要緩存和相同的對象,範圍在-128到127之間的「Integers」。 https://stackoverflow.com/questions/20897020/why-integer-class-caching-values-in-the-range-128-to-127 – markspace
@markspace自動裝箱或調用'的valueOf只有當()'。使用'new'關鍵字創建的對象必須始終不同。 – shmosel
@shmosel啊,對!我鏈接到的SO問題說「盒裝」對象。謝謝你指出。 – markspace