我想知道这两个是否相同。任何人都可以验证吗? (我正在尝试用第二个替换第一个)
BigDecimal totalCurrentSales = new BigDecimal(0);
和
BigDecimal totalCurrentSales = BigDecimal.ZERO;
我问的原因是第一种方式声明它是不合适的,因为您不应该创建已经存在的 BigInteger
和 BigDecimal (ZERO, ONE, TEN) 的实例
。所以我想知道我是否可以用第二种方式说它,它仍然被认为是创建一个实例。而不是我必须创建一个变量 zero
或等于 BigDecimal.ZERO
的东西。或者还有其他方法吗?
我试过了
BigDecimal totalCurrentSales = new BigDecimal(BigDecimal.ZERO);
但是eclipse不太开心。
最佳答案
在数学上,它们是相同的。此外,由于 BigDecimal 是不可变的,因此您无需担心创建新实例来进行新计算。只要您对 totalCurrentSales
实例执行一些操作,您实际上就会创建一个新的 BigDecimal 并将 totalCurrentSales
引用重新分配给新值。
从实例化的角度来看,它们不一定完全相同。例如,在 OpenJDK 6b14 实现中,BigDecimal.ZERO
是通过调用具有值 BigInteger.ZERO 的私有(private)
、new BigDecimal(BigInteger, long, int)
构造函数来创建的0
和 0
。
从代码质量的角度来看,使用 BigDecimal.ZERO
比 new BigDecimal(0)
更可取,因为您可以避免额外的实例化并在代码中使用文字。
关于java - BigDecimal.ZERO 与新的 BigDecimal(0)。使用哪个,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26364667/