Преобразование из Integer в BigInteger

130

Мне было интересно, есть ли способ преобразовать переменную типа Integer в BigInteger. Я попытался привести тип переменной типа Integer, но получил сообщение об ошибке, указывающее на неконвертируемый тип.

Стеффан Харрис
источник
12
вы задали несколько вопросов о BigInteger, которые можно довольно легко решить, прочитав документацию Javadocs. Перейдите по ссылке в моем ответе и ознакомьтесь со всеми методами и конструкторами, которые есть в BigInteger.
jjnguy 07

Ответы:

239

Вам нужен метод BigInteger # valueOf (long val) .

Например,

BigInteger bi = BigInteger.valueOf(myInteger.intValue());

Создавать сначала String не нужно и нежелательно.

jbindel
источник
2
@Mich, нет. Если это целое число, Java автоматически расширит его за вас. (OP говорит, что у него целое число)
jjnguy
Это тоже сработает. В Integer intValue () не будет переполняться, поэтому вызов valueOf просто расширит int до long. В этом примере нет заметной разницы между использованием longValue () и intValue (), но если он начал с Long, он хотел бы использовать longValue ().
jbindel 07
2
Amar, это было бы похоже на другие подходы на основе String. Ключевым моментом, которого здесь следует избегать, является генерация или синтаксический анализ строк.
jbindel 05
1
Дело не в том, что использование String даст вам неправильный ответ, но это дополнительная работа для компьютера. Например, вы можете пройти в соседний дом, пройдя по соседнему дому, или вы можете пойти в противоположном направлении и обойти почти весь земной шар. Вы все равно доберетесь туда, и если у вас есть быстрый ракетоплан, вы можете не заметить, сколько времени на это потребовалось, но это расточительно и требует больше времени.
jbindel 05
1
А как насчет случаев, когда myInteger имеет значение null, это будет NPE.
Wizzard
-4

Сделать можно так:

    Integer i = 1;
    new BigInteger("" + i);
Георгиос Карагунис
источник
5
Можно, но зачем? В уже принятом ответе предлагается гораздо лучшее решение.
Колин
Создание строк для выполнения целочисленной математики тратит больше циклов ЦП, чем вы можете рассчитывать.
jbindel