为什么Java的BigInteger有TEN和ONE作为常量? 任何实际用途?
为什么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
公共方法。 您将很容易看到他们的常见用例。
一个可能是math中最基本的数字(旁边是零)。 似乎应该得到自己独有的恒定。 实际上,在许多algorithm中,这是一个有用的数字。
在BigInteger上下文中十是重要的,因为它是十进制数系统的基础。 这很重要,因为几个BigInteger函数需要一个基数(例如BigInteger.toString(int radix)
,因此它是一个非常有用的常量。
恕我直言,这是一个devise决定,因为1和10被用在Java API代码库的其他部分。 创buildBig *是一个昂贵的操作,并且使用常量避免创build新对象(无论如何,Big *都是不可变的),代码更具可读性。
可能其他常量不是API的其余部分所需要的。
让他们公开可能是一个错误。 (Java API充满了“坏”的devise决策)
我其实不知道,但也许:
- 零: 添加标识
- 一: 乘法身份
- 十:十进制的基数
也许他们只是在内部使用这些常量? (我没有检查源代码,但它是开源的)。
编辑:
例如:
看了代码后,我认为是因为他们在内部使用了ZERO和ONE。 考虑到以上原因,可能认为其他人也可能从这些常数中获益。 或者也可以在其他一些类中使用这些常量。
TEN已经在v1.5中join了,它似乎没有被内部使用,但也许被另一个类使用了?
10,0和1几乎可以回答所有的事情。 例如,如果你想到达42,你可以做(10 + 10 + 10 + 10 + 1 + 1):)