为什么 BigInteger 类有常量 10 和 1?将它们作为常量有什么实际用途?我可以理解零的一些用例。
5 回答
假设您编写了一个函数,该函数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 上下文中很重要,因为它是十进制数系统的基础。这很重要,因为几个 BigInteger 函数需要一个基数基数(例如BigInteger.toString(int radix)
。因此它是一个非常有用的常量。
恕我直言,这是一个设计决定,因为 1 和 10 用于 Java API 代码库的其他部分。创建 Big* 是一项昂贵的操作,使用常量可以避免创建新对象(无论如何,Big* 都是不可变的)并且代码更具可读性。
API 的其余部分可能不需要其他常量。
将它们公开可能是一个错误。(Java API 充满了“糟糕”的设计决策)
我实际上不知道,但也许:
也许他们只是在内部大量使用了这些常量?(我没有检查源代码,但它是开源的)。
编辑:
例如:
在查看代码后,我认为原因是因为他们在内部使用了很多零和一。考虑到上述原因,可能认为其他人也可能从这些常数中受益。或者他们也可能在其他一些类中使用这些常量。
TEN 在 v1.5 中增加了 内部好像没有使用,可能是被别的类使用了?
10、0 和 1 几乎可以回答所有问题。例如,如果您想达到 42 岁,您可以执行 (10 + 10 + 10 + 10 + 1 + 1) :)