BigDecimal.ZERO与新的BigDecimal(0)。使用哪个,为什么?

erp:

我想知道这两个是否相同。谁能验证?(我正在尝试用第二个替换第一个)

BigDecimal totalCurrentSales = new BigDecimal(0);

BigDecimal totalCurrentSales = BigDecimal.ZERO;

我问的原因是,用第一种方法声明它是不合适的,因为不应该创建已经存在的BigInteger和的实例BigDecimal (ZERO, ONE, TEN)所以我想知道是否可以用第二种方式说出来,并且仍然可以考虑创建一个实例。不必我创建变量zero或等于的东西BigDecimal.ZERO还是还有其他方法?

我试过了

BigDecimal totalCurrentSales = new BigDecimal(BigDecimal.ZERO);

但是日食不是很高兴。

bdkosher:

在数学上,它们是相同的。另外,由于BigDecimals是不可变的,因此您不必担心创建新实例来执行新计算。totalCurrentSales实例上执行某些操作后,实际上您将创建一个新的BigDecimal并将totalCurrentSales引用重新分配给新值。

从实例的角度来看,它们不一定完全相同。在OpenJDK的6b14实现,例如,BigDecimal.ZERO通过调用私人创建的new BigDecimal(BigInteger, long, int)构造函数值BigInteger.ZERO00

从代码质量的角度来看,BigDecimal.ZERO最好使用new BigDecimal(0)因为这样可以避免额外的实例化并在代码中包含文字。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章