我想知道这两个是否相同。谁能验证?(我正在尝试用第二个替换第一个)
BigDecimal totalCurrentSales = new BigDecimal(0);
和
BigDecimal totalCurrentSales = BigDecimal.ZERO;
我问的原因是,用第一种方法声明它是不合适的,因为不应该创建已经存在的BigInteger
和的实例BigDecimal (ZERO, ONE, TEN)
。所以我想知道是否可以用第二种方式说出来,并且仍然可以考虑创建一个实例。不必我创建变量zero
或等于的东西BigDecimal.ZERO
。还是还有其他方法?
我试过了
BigDecimal totalCurrentSales = new BigDecimal(BigDecimal.ZERO);
但是日食不是很高兴。
在数学上,它们是相同的。另外,由于BigDecimals是不可变的,因此您不必担心创建新实例来执行新计算。在totalCurrentSales
实例上执行某些操作后,实际上您将创建一个新的BigDecimal并将totalCurrentSales
引用重新分配给新值。
从实例的角度来看,它们不一定完全相同。在OpenJDK的6b14实现,例如,BigDecimal.ZERO
通过调用私人创建的new BigDecimal(BigInteger, long, int)
构造函数值BigInteger.ZERO
,0
和0
。
从代码质量的角度来看,BigDecimal.ZERO
最好使用,new BigDecimal(0)
因为这样可以避免额外的实例化并在代码中包含文字。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句