Konversi dari Integer, ke BigInteger

129

Saya bertanya-tanya apakah ada cara untuk mengkonversi variabel tipe Integer, ke BigInteger. Saya mencoba typecasting variabel Integer, tetapi saya mendapatkan kesalahan yang mengatakan tipe tidak dapat dikonversi.

Steffan Harris
sumber
12
Anda telah mengajukan beberapa pertanyaan tentang BigInteger yang akan diselesaikan dengan cukup mudah dengan membaca Javadocs. Ikuti tautan dalam jawaban saya, dan periksa semua metode dan konstruktor yang dimiliki BigInteger.
jjnguy

Jawaban:

239

Metode yang Anda inginkan adalah BigInteger # valueOf (long val) .

Misalnya,

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

Membuat String terlebih dahulu tidak perlu dan tidak diinginkan.

jbindel
sumber
2
@Mich, tidak. Jika bilangan bulat, Java akan secara otomatis memperluasnya untuk Anda. (OP mengatakan ia memiliki Integer)
jjnguy
Itu akan berhasil juga. Pada Integer, intValue () tidak akan meluap, jadi panggilan ke valueOf hanya akan memperluas int ke panjang. Tidak ada perbedaan nyata antara menggunakan longValue () dan intValue () dalam contoh ini, tetapi jika ia mulai dengan Long, ia ingin menggunakan longValue ().
jbindel
2
Amar, itu akan mirip dengan pendekatan berbasis String lainnya. Hal utama yang harus dihindari di sini adalah setiap generasi atau penguraian String.
jbindel
1
Bukannya menggunakan String akan memberikan jawaban yang salah, tetapi ini merupakan pekerjaan ekstra untuk komputer. Misalnya, Anda dapat pergi ke rumah sebelah dengan berjalan di sebelahnya, atau Anda bisa pergi ke arah yang berlawanan dan pergi hampir ke seluruh dunia. Anda masih akan sampai di sana, dan jika Anda memiliki pesawat roket yang cepat, Anda mungkin tidak memperhatikan waktu yang diperlukan, tetapi itu sia-sia, dan itu membutuhkan waktu lebih lama.
jbindel
1
Dan bagaimana dengan kasus ketika myInteger adalah null, itu akan menjadi NPE.
Wizzard
-4

Anda bisa melakukannya dengan cara ini:

    Integer i = 1;
    new BigInteger("" + i);
Giorgios Karagounis
sumber
5
Anda bisa, tetapi mengapa Anda mau? Solusi yang jauh lebih baik diusulkan dalam jawaban yang sudah diterima.
Colin
Membuat string untuk melakukan integer matematika menghabiskan lebih banyak siklus CPU daripada yang Anda hitung.
jbindel