为什么有BigInteger(String)但没有BigInteger(long)?

时间:2014-10-03 20:24:34

标签: java biginteger factory-pattern

在Java中,要将String转换为BigInteger,您可以使用构造函数new BigInteger(String)但是为了转换int / long,您使用工厂函数BigInteger.valueof(long),为什么会这样?

2 个答案:

答案 0 :(得分:20)

@Morad您可以在文档中找到答案:JavaDoc of BigInteger.valueOf(long)

  

这个"静态工厂方法"提供优先于(长)   构造函数因为它允许重用经常使用的   BigIntegers。

解释BigInteger.valueOf(long)完全符合您对BigInteger(long)构造函数的期望,并且(或者应该)更高效

答案 1 :(得分:11)

实际上一个BigInteger(long)构造函数,但它是私有的。工厂方法中的javadoc提供了有关原因的信息:

  

这个"静态工厂方法"提供优先于(长)   构造函数因为它允许重用经常使用的   BigIntegers。