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()
。
這是比較指針而不是整數。事實上,對於5,它返回相同的指針只是一個優化,一個實現細節。 (僅供參考,我根本不知道任何Java,我只是[閱讀文檔](http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html)... ) – 2014-10-28 19:49:36
http://stackoverflow.com/questions/1514910/when-comparing-two-integers-in-java-does-auto-unboxing-occur – Pshemo 2014-10-28 19:49:37
http://stackoverflow.com/questions/20897020/why-integer- class-caching-values-in-the-range-128-to-127 – khelwood 2014-10-28 19:50:27