这是我正在看的一个例子
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;
它在BigInteger(i +“”)中做了什么?
答案 0 :(得分:3)
BigInteger
构造函数采用String
参数,而不是int
。
i + ""
将i
强制转换为String
数据类型,以便将其传递给构造函数。
答案 1 :(得分:2)
这是将int转换为String对象的简短方法。他们这样做是因为BigInteger的构造函数没有收到int作为参数。
您可以在此处查看javadoc:https://docs.oracle.com/javase/7/docs/api/java/math/BigInteger.html
由于表达式位于for中,更好的方法必须是:
for (int i = 1; i <= n; i++)
result = result.multiply(BigInteger.valueOf(i));
因为当你试图表示大于64位的符号int(2 ^ 63 - 1)的数字时,使用String的构造函数很有用