为什么BigInteger类具有常量TEN和ONE?将它们作为常数的任何实际用途?我可以理解ZERO的一些用例.
Mus*_*enç 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
}
}
Run Code Online (Sandbox Code Playgroud)
也BigInteger.TEN常用于电源/分频/模块操作.
结帐BigInteger公共方法.您将很容易看到他们的常见用例.
mik*_*era 21
一个可能是数学中最基本的数字(除了零).似乎在这一点上应该得到自己的常数.实际上,在许多算法中作为常量使用它是一个有用的数字.
Ten在BigInteger上下文中很重要,因为它是十进制数字系统的基础.这很重要,因为有几个BigInteger函数需要一个基数(例如BigInteger.toString(int radix),它因此是一个非常有用的常量).
Pet*_*Mmm 11
恕我直言,这是一个设计决定,因为1和10用于Java API代码库的其他部分.创建Big*是一项昂贵的操作,并且使用常量来避免创建新对象(Big*无论如何都是不可变的)并且代码更具可读性.
API的其余部分可能不需要其他常量.
将它们公之于众可能是一个错误.(java API充满了"糟糕"的设计决策)
我其实不知道,但也许:
也许他们只是在内部使用这些常数?(我没有检查源代码,但它是开源的).
编辑:
例如:
在查看代码后,我认为原因是因为它们在内部使用了ZERO和ONE.考虑到上述原因,可能认为其他人也可能从这些常数中获益.或者他们也可以在其他一些类中使用这些常量.
在v1.5中添加了TEN它似乎没有在内部使用,但可能是由另一个类?