問題:對於integer物件,當比較2=2的時候,返回的值是true還是false?當比較2000=2000的時候,返回的值是true還是false?
回答:當比較2=2的時候,返回的值是true;當比較2000=2000的時候,返回的值是false。
理由:equal比較是兩個值的大小是否能夠相等;「=」比較是兩個值的位址是否相等,參考integer的api文件,我們可以發現integer內部維護了乙個快取池,當值的範圍是-128到127的時候,integer總是到快取池裡面去取值;當超過了這個範圍,integer才會去new新的物件。所以在-128到127這個範圍內是直接取值,不是建立值,所以值總是相等;當時超過了這個範圍,建立了新的位址,當然就不相等了。
Integer型別物件比較
先看一段 integer i1 1813 integer i2 1813 system.out.println i1 i2 integer i3 127 integer i4 127 system.out.println i3 i4 列印結果 false true i1 i2 結果是false容易理...
Integer物件的比較問題
integer a 1 integer b 1 integer c 500 integer d 500 system.out.println a b system.out.println c d integer aa new integer 10 integer bb new integer 10 ...
數字Integer物件比較發生的尷尬事
程式中經常會用到數字比較,但是你認為1000 1000 和 100 100比較值是否相同呢?integer a 1000 b 1000 system.out.println a b integer c 100 d 100 system.out.println c d 比較結果 false true造...