Understanding BigInteger constructor

I have the following code from my textbook for figuring out factorial:

 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;
      }

However, I really don't understand new BigInteger(i +""). Why they put +"" in the constructor?I mean we are not multiplying an empty String and it does not make any sense either.Please explain.

Jon Skeet
people
quotationmark

It's just calling the BigInteger(String) constructor, because there isn't a constructor taking an int. Using string concatenation is a nasty way of converting an int to a String, but it will work.

A cleaner approach IMO would be to use BigInteger.valueOf(long):

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

(Given both of these issues, I'd be slightly wary of the quality of your textbook...)

people

See more on this question at Stackoverflow