代碼:整數指代相同的對象
Integer a1 = 100;
Integer a2 = 100;
System.out.println(a1 == a2); // true
Integer b1 = new Integer(100);
Integer b2 = new Integer(100);
System.out.println(b1 == b2); // false
Integer c1 = 150;
Integer c2 = 150;
System.out.println(c1 == c2); // false
爪哇設計,使用自動裝箱時,-128和127之間的值似乎是指相同的Integer對象,這使得第一代碼段的不同的結果和最後一個
我的問題是:爲什麼Java設計它是這樣的,有沒有什麼優勢?
你認爲它可能有什麼優勢?您對該主題的研究結果如何?嘗試使用'-XX:+ AggressiveOpts'運行相同的程序http://stackoverflow.com/a/11882284/57695 –
嘗試創建一個包含一百萬個小整數的數組,您將看到優勢。 –
@dystroy我不確定這是一個重複的問題,這個問題要求緩存整數的好處,而不是爲什麼代碼的行爲方式。 – assylias