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
我發現了一個有趣的事實,但我不知道它是如何發生的。整數比較,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
Integer
使用==
僅適用於-128和127
之間的數字,因爲Integer
是Object
,使用equals
將爲所有值工作比較。
實際上,它適用於要測試對象標識的所有Integers。當你用valueOf()或者通過裝箱創建一個Integer對象時,你可以得到整數的緩存單例,範圍是-128 ... 127(但這是可配置的)https://stackoverflow.com/a/15052272 – eckes 2017-12-13 02:08:37
您需要在這裏使用'.equals()'。見[這個問題](http://stackoverflow.com/questions/2772763/why-equals-method-when-we-have-operator); '=='和'.equals()'表現不同。 – Pokechu22 2014-10-18 22:18:39