了解BigInteger构造函数

时间:2016-03-17 22:58:23

标签: java biginteger

我的教科书中有以下代码,用于计算阶乘:

 import java.math.*;
 public class LargeFactorial {
 public static void main(String[] args) {

  System.out.println("50! is \n" + factorial(50));
  }  public static BigInteger factorial(long n) {
      BigInteger result = BigInteger.ONE;
      for (int i = 1; i <= n; i++)
          result = result.multiply(new BigInteger(i +""));
      return result;
      }

但是,我真的不明白new BigInteger(i +"")。为什么他们将+""放在构造函数中?我的意思是我们不会将空字符串乘以它也没有任何意义。请解释一下。

1 个答案:

答案 0 :(得分:8)

它只是调用BigInteger(String)构造函数,因为没有构造函数使用int。使用字符串连接是将int转换为String的一种令人讨厌的方式,但它会起作用。

更清洁的方法IMO将使用BigInteger.valueOf(long)

result = result.multiply(BigInteger.valueOf(i));

(鉴于这两个问题,我对你的教科书质量略有警惕......)