BigDecimal的equals() 和 compareTo() 方法比較
對於 BigDecimal,當我們同時檢查 equals() 和 compareTo() 方法時,事情真的很有趣考慮以下小程式:
BigDecimal x = new BigDecimal("2"); BigDecimal y = new BigDecimal("2.00"); System.out.println(x.equals(y)); System.out.println(x.compareTo(y) == 0 ? "true": "false"); |
我們可以說 x 等於 y(不是物件引用),執行上面的程式會顯示如下
false true |
在檢查這一點時我想到的問題之一是“對於 BigDecimal,compareTo 如何確定 x 等於 y,以及 BigDecimal 中的 compareTo() 和 equals() 方法之間有什麼區別”
答案在equals() 方法的 JavaDoc 中:
將 BigDecimal 與指定的 Object 進行比較是否相等。與 compareTo 不同,此方法僅在兩個 BigDecimal 物件的值和比例相等時才認為它們相等(因此,透過此方法進行比較時,2.0 不等於 2.00)。equals 方法考慮了比例
總而言之,equals() 檢查 BigDecimal 物件是否相同是每個方面,而 compareTo 只檢查數值。
底線是:
使用 compareTo() 而不是 equals() 來比較數值,因為equals()考慮了比例!
相關文章
- ==和equals方法的比較
- 為什麼阿里巴巴禁止使用BigDecimal的equals方法做等值比較?阿里Decimal
- 利用compareTo方法進行字串比較排序字串排序
- Java的BigDecimal比較大小JavaDecimal
- ==與equals比較
- JAVA中字串比較equals()和equalsIgnoreCase()的區別Java字串
- jQuery的prop和attr方法比較jQuery
- Java compareTo() 方法Java
- UFDoble型別計算、比較大小。BigDecimal轉UFDouble型別Decimal
- Java 中比較 BigDecimal 的陷阱JavaDecimal
- ==和equals方法的區別
- String的equals和hashCode方法
- MapReduce關於key的定義、hashCode()、equals(Object obj)、compareTo(CustomCombineKey other)Object
- Java中equals和==比的是什麼Java
- js 深比較和淺比較JS
- Java中 equals() 方法和 == 的區別Java
- 理解String的compareTo()方法返回值
- 搞懂 Java equals 和 hashCode 方法Java
- Go和Python比較的話,哪個比較好?GoPython
- ImageMagic 和 GraphicsMagick 的比較
- ArrayList和LinkedList的比較
- Oracle date 型別比較和String比較Oracle型別
- initialize方法與load方法比較
- 自動生成hashcode和equals方法
- Java基礎系列-equals方法和hashCode方法Java
- Equals方法
- Cesium 比較常用的幾個方法
- not in 和 not exists 比較和用法
- TreeMap和HashMap的元素比較HashMap
- BigDecimal的divide方法報錯DecimalIDE
- Go 與 C++ 的對比和比較GoC++
- etcd和redis比較Redis
- TCP和UDP比較TCPUDP
- Redis 和 Memcached 比較Redis
- Java和JavaSciprt比較Java
- 四種在Javascript比較物件的方法JavaScript物件
- 訪問vector元素方法的效率比較
- 分割陣列的幾種方法比較陣列