2016-02-15 21 views

回答

8

Integer是一類。因此,要比較的對象,你需要使用equals,而不是==

與實際情況有什麼短整型是,如果你使用的方法獲得一個IntegervalueOf您-128到127之間總是得到的值相同的緩存實例,所以,這種情況==的作品。

如果您不是使用valueOf,而是使用運算符new明確創建新實例,則它不起作用。


爲了更清晰我寫目前執行的valueOf

public static Integer valueOf(int i) { 
    final int offset = 128; 
    if (i >= -128 && i <= 127) { // must cache 
     return IntegerCache.cache[i + offset]; 
    } 
    return new Integer(i); 
} 
+0

但它適用於(整數)1 ==(整數)1? –

+0

檢查更新的答案 –

+0

有趣的-1爲一個正確的答案 –

相關問題