2014-10-28 113 views
3
System.out.println(Integer.valueOf(5) == Integer.valueOf(5)); 
System.out.println(Integer.valueOf(500) == Integer.valueOf(500)); 

輸出是爲什麼== Integer.valueOf(500)返回false,但是true爲5?

true 
false 

爲什麼第一行返回true,但第二行返回false?這裏有什麼竅門,因爲他們都在Integer上打電話valueOf()

+3

這是比較指針而不是整數。事實上,對於5,它返回相同的指針只是一個優化,一個實現細節。 (僅供參考,我根本不知道任何Java,我只是[閱讀文檔](http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html)... ) – 2014-10-28 19:49:36

+1

http://stackoverflow.com/questions/1514910/when-comparing-two-integers-in-java-does-auto-unboxing-occur – Pshemo 2014-10-28 19:49:37

+1

http://stackoverflow.com/questions/20897020/why-integer- class-caching-values-in-the-range-128-to-127 – khelwood 2014-10-28 19:50:27

回答

4

存在低編號整數對象的緩存實例,但沒有任何更高值的整數對象。

如果您以前沒有注意到,則是比較對象,而不是整數。

相關問題