2014-10-18 96 views
0

我發現了一個有趣的事實,但我不知道它是如何發生的。整數比較,10和128

Integer x = 10; 
Integer y = 10; 
System.out.print(x==y); // true 
Integer x = 128; 
Integer y = 128; 
System.out.print(x==y); // false 
+0

您需要在這裏使用'.equals()'。見[這個問題](http://stackoverflow.com/questions/2772763/why-equals-method-when-we-have-operator); '=='和'.equals()'表現不同。 – Pokechu22 2014-10-18 22:18:39

回答

0

Integer使用==僅適用於-128和127

之間的數字,因爲IntegerObject,使用equals將爲所有值工作比較。

+0

實際上,它適用於要測試對象標識的所有Integers。當你用valueOf()或者通過裝箱創建一個Integer對象時,你可以得到整數的緩存單例,範圍是-128 ... 127(但這是可配置的)https://stackoverflow.com/a/15052272 – eckes 2017-12-13 02:08:37