Почему мы не используем ключевое слово new при преобразовании int в BigInteger, тогда как мы используем ключевое слово new при преобразовании из string в BigInteger?

#java #biginteger

#java #biginteger

Вопрос:

При преобразовании из int в BigInteger мы пишем

 int n = 100;
BigInteger bi = BigInteger.valueOf(n);
 

когда мы печатаем bi, мы получаем 100.
но при преобразовании из String в BigInteger мы пишем

 String str = "100";
BigInteger biStr = new BigInteger(str);
 

biStr объект использует new ключевое слово для хранения значения значения BigInteger, которое преобразуется из строки, но где bi объект будет хранить свое значение BigInteger, которое преобразуется из int.

Комментарии:

1. Я рекомендую взглянуть на то, как BigInteger.valueOf это реализовано.

Ответ №1:

Цитируем BigInteger javadoc для valueOf:

«Этот «статический фабричный метод» предоставляется предпочтительнее (длинного) конструктора, поскольку он позволяет повторно использовать часто используемые BigIntegers».