为什么BigInteger类具有常量TEN和ONE?将它们作为常数的任何实际用途?我可以理解ZERO的一些用例。
答案 0 :(得分:51)
假设您编写了一个函数,在一些计算和数据库操作之后返回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
公开方法。您将很容易看到它们的常见用例。
答案 1 :(得分:21)
一个可能是数学中最基本的数字(除零之外)。似乎在这一点上应该得到自己的常数。实际上,在许多算法中将其作为常量是一个有用的数字。
Ten 在BigInteger上下文中很重要,因为它是十进制数字系统的基础。这很重要,因为有几个BigInteger函数需要一个基数(例如BigInteger.toString(int radix)
。因此它是一个非常有用的常量。
答案 2 :(得分:11)
恕我直言,这是一个设计决定,因为1和10用于Java API代码库的其他部分。创建Big *是一项昂贵的操作,并且使用常量来避免创建新对象(Big *无论如何都是不可变的)并且代码更具可读性。
其他API可能不需要其他常量。
将它们公之于众可能是一个错误。 (java API充满了“糟糕的”设计决策)
答案 3 :(得分:5)
我实际上不知道,但也许:
也许他们只是在内部使用了这些常数? (我没有检查过源代码,但它是开源的。)
修改强>
E.g:
在查看代码后,我认为原因是因为他们在内部使用了ZERO和ONE。考虑到上述原因,可能认为其他人也可能从这些常数中获益。或者他们也可以在其他一些类中使用这些常量。
在v1.5中添加了TEN 它似乎没有在内部使用,但可能是由另一个类使用?
答案 4 :(得分:-2)
10,0和1几乎可以回答所有问题。例如,如果你想要到达42,你可以做一个(10 + 10 + 10 + 10 + 1 + 1):))