問題:對於integer對象,當比較2=2的時候,返回的值是true還是false?當比較2000=2000的時候,返回的值是true還是false? 回答:當比較2=2的時候,返回的值是true;當比較2000=2000的時候,返回的值是false。 理由:equal比較是兩個值的大小是否能夠相等 ...
問題:對於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這個範圍內是直接取值,不是創建值,所以值總是相等;當時超過了這個範圍,創建了新的地址,當然就不相等了。