为什么BigInteger类有常量TEN和ONE?将它们作为常量的实际用途是什么?我能理解一些关于ZERO的使用情况。
为什么BigInteger类有常量TEN和ONE?将它们作为常量的实际用途是什么?我能理解一些关于ZERO的使用情况。
假设你编写了一个函数,在进行一些计算和数据库操作后返回BigInteger
。你经常需要返回类似于null、0、1的值。使用BigInteger.ZERO
很容易。这些值是公共的,因为它们通常是需要的。
public BigInteger findMyLovelyBigInteger(Integer secretNumber) {
if (secretNumber == null) {
return BigInteger.ZERO; // better than BigInteger.valueOf(0);
} else {
// some db operations
}
}
此外,BigInteger.TEN
通常用于幂/除法/模运算。
查看 BigInteger
的公共方法。您将轻松了解它们的常见用例。
BigInteger.TEN
比BigInteger.valueOf(10)
更清晰易懂,特别是如果你使用了import static
。 - Kevin一在数学上可能是最基本的数字之一(和零一起)。由于这个原因,它似乎值得有自己的常数。实际上,在许多算法中,它作为一个常数是非常有用的。
十在BigInteger上下文中很重要,因为它是十进制数系统的基数。这很重要,因为几个BigInteger函数需要一个基数(例如BigInteger.toString(int radix)
)。因此,这是一个非常有用的常数。
TEN
是一个 BigInteger
而不是 int 类型,所以对于这些方法来说它没有用处。 - Joey我认为这是一项设计决策,因为Java API代码库的其他部分中使用了1和10。创建Big*是一个昂贵的操作,而使用常量避免了新对象的创建(无论如何,Big*是不可变的),代码更易读。
可能其他常量在API的其余部分中并不需要。
将它们公开可能是个错误。(Java API充满了“糟糕”的设计决策)
我其实不太清楚,但也许是因为:
也许在内部他们经常使用这些常量?(我没有检查过源代码,但它是开源的)。
编辑:
例如:
看了代码后,我认为原因是他们在内部经常使用 ZERO 和 ONE。 可能认为其他人出于以上原因也可以从这些常量中受益。 或者也许他们还在其他类中使用这些常量。
TEN已添加到v1.5 似乎没有在内部使用,但也许被其他类使用?
10、0和1几乎可以回答所有问题。例如,如果你想要得到42,你可以做一个(10 + 10 + 10 + 10 + 1 + 1):)