天天看點

謹慎包裝類型的大小比較

基本資料類型比較大小木有問題,不過其對應的包裝類型大小比較就需要注意了。看如下代碼:

謹慎包裝類型的大小比較
謹慎包裝類型的大小比較

運作結果:

為什麼(a==b)傳回值會是false呢?

通過對比字元串比較來了解,基本類型100通過包裝類Integer包裝後生産一個Integer對象的引用a,

而“==”使用來判斷兩個操作數是否有相等關系。如果是基本類型就直接判斷其值是否相等。

若是對象就判斷是否是同一個對象的引用,顯然我們new了兩個不同的對象。

但注意:

對于"<",">" 隻是用來判斷兩個基本類型的數值的大小關系。在進行(a<b)運算時,

實際上是根據其intValue方法的傳回對應的數值來進行比較的。是以傳回肯定是false.

知道問題原因,解決起來就容易了。兩種方法:

第一種: a.intValue()==b.intValue();

第二種: a.compareTo(b);//傳回-1代碼(a<b),傳回0代表(a==b),傳回1代表(a>b)

第二種方法源碼如下:

謹慎包裝類型的大小比較
謹慎包裝類型的大小比較

由此可知,底層實作還是一樣的。

本文轉自SummerChill部落格園部落格,原文連結:http://www.cnblogs.com/DreamDrive/p/5422761.html,如需轉載請自行聯系原作者