考虑简单的测试类:
import java.math.BigDecimal; /** * @author The Elite Gentleman * */ public class Main { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub BigDecimal x = new BigDecimal("1"); BigDecimal y = new BigDecimal("1.00"); System.out.println(x.equals(y)); System.out.println(x.compareTo(y) == 0 ? "true": "false"); } }
您可以(有意识地)说x等于y(不是对象引用),但是当您运行程序时,会显示以下结果:
x
y
false true
compareTo()问题:和equals()之间BigDecimal有什么区别compareTo可以确定x等于y?
compareTo()
equals()
BigDecimal
compareTo
PS:我看到 BigDecimal 有一个inflate()方法上的equals()方法。实际上做什么inflate()?
inflate()
答案在方法的 JavaDoc 中equals():
与 不同compareTo的是,此方法仅当两个BigDecimal对象的值和比例相等时才认为它们相等(因此,通过此方法进行比较时,2.0 不等于 2.00)。
换句话说:equals()检查BigDecimal对象在 各个* 方面是否 完全相同。 “only” 比较它们的数值。 *compareTo()