在Java中的表达式中使用双引号时会做什么?

时间:2014-11-17 01:58:20

标签: java

这是我正在看的一个例子

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 +“”)中做了什么?

2 个答案:

答案 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的构造函数很有用