基本資料類型比較大小木有問題,不過其對應的包裝類型大小比較就需要注意了。看如下代碼:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLlR2bjlHcvN2LcNXZnFWbp9CXt92YuM3ZvxmYuNmLu9Wbt92Yvw1LcpDc0RHaiojIsJye.gif)
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLlR2bjlHcvN2LcNXZnFWbp9CXt92YuM3ZvxmYuNmLu9Wbt92Yvw1LcpDc0RHaiojIsJye.gif)
運作結果:
為什麼(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)
第二種方法源碼如下:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLlR2bjlHcvN2LcNXZnFWbp9CXt92YuM3ZvxmYuNmLu9Wbt92Yvw1LcpDc0RHaiojIsJye.gif)
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLlR2bjlHcvN2LcNXZnFWbp9CXt92YuM3ZvxmYuNmLu9Wbt92Yvw1LcpDc0RHaiojIsJye.gif)
由此可知,底層實作還是一樣的。
本文轉自SummerChill部落格園部落格,原文連結:http://www.cnblogs.com/DreamDrive/p/5422761.html,如需轉載請自行聯系原作者