gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 20:39:50 26 4
gpt4 key购买 nike

我想知道这两个是否相同。任何人都可以验证吗? (我正在尝试用第二个替换第一个)

BigDecimal totalCurrentSales = new BigDecimal(0);

BigDecimal totalCurrentSales = BigDecimal.ZERO;

我问的原因是第一种方式声明它是不合适的,因为您不应该创建已经存在的 BigIntegerBigDecimal (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) 构造函数来创建的00

从代码质量的角度来看,使用 BigDecimal.ZEROnew BigDecimal(0) 更可取,因为您可以避免额外的实例化并在代码中使用文字。

关于java - BigDecimal.ZERO 与新的 BigDecimal(0)。使用哪个,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26364667/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com