Kadang-kadang saya melihat penggunaan API long
atau Long
atau int
atau Integer
, dan saya tidak tahu bagaimana keputusan dibuat untuk itu?
Kapan saya harus memilih apa?
Long
adalah Object
bentuk dari long
, dan Integer
merupakan bentuk objek dari int
.
The long
menggunakan 64 bit . The int
penggunaan 32 bit, sehingga hanya bisa menampung angka sampai dengan ± 2 miliar (-2 31 ke +2 31 -1).
Anda harus menggunakan long
dan int
, kecuali jika Anda perlu menggunakan metode yang diwarisi dari Object
, seperti hashcode
. Java.util.collections
metode biasanya menggunakan versi kotak ( Object
-wrapped), karena mereka perlu bekerja untuk apa saja Object
, dan tipe primitif, seperti int
atau long
, bukan Object
.
Perbedaan lainnya adalah bahwa long
dan int
merupakan nilai-demi-nilai , sedangkan Long
dan Integer
merupakan nilai referensi yang dilewati , seperti semua tipe Java non-primitif. Jadi jika dimungkinkan untuk mengubah Long
atau Integer
(tidak, mereka tidak dapat diubah tanpa menggunakan kode JNI), akan ada alasan lain untuk menggunakan salah satu dari yang lain.
Perbedaan terakhir adalah bahwa a Long
atau Integer
bisa jadi null
.
Ada beberapa hal yang tidak dapat Anda lakukan dengan tipe primitif:
null
nilaiObject
sKecuali Anda membutuhkan salah satu dari itu, Anda harus memilih tipe primitif, karena mereka membutuhkan lebih sedikit memori.
sumber
int
, saat menahan angka.int
terlalu kecil, gunakan along
long
terlalu kecil, gunakanBigInteger
Collection
, menanganinull
, ...) gunakanInteger
/Long
sebagai gantinyasumber
An
int
adalah integer 32-bit; along
adalah bilangan bulat 64-bit. Yang mana yang akan digunakan tergantung pada seberapa besar angkanya yang ingin Anda kerjakan.int
danlong
merupakan tipe primitif, sedangkanInteger
danLong
merupakan objek. Tipe primitif lebih efisien, tetapi terkadang Anda perlu menggunakan objek; misalnya, kelas koleksi Java hanya dapat bekerja dengan objek, jadi jika Anda memerlukan daftar bilangan bulat, Anda harus membuatnyaList<Integer>
, misalnya (Anda tidak dapat menggunakannyaint
secaraList
langsung).sumber
Integer adalah tipe integer 32 bit bertanda
Int
32 bits (4byte)
-2,147,483,648 to 2,147,483,647
Long adalah tipe integer 64 bit yang ditandatangani
Long
64 bits (8byte)
-9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
Jika penggunaan Anda atas variabel termasuk dalam kisaran 32 bit, gunakan
Int
, else uselong
. Biasanya panjang digunakan untuk perhitungan ilmiah dan hal-hal seperti itu membutuhkan banyak ketelitian. (misalnya nilai pi).sumber
Ketika menggunakan angka yang sangat panjang yang mungkin melebihi 32 bit untuk diwakili, Anda dapat menggunakan panjang untuk memastikan bahwa Anda tidak akan memiliki perilaku aneh.
Dari Java 5 Anda dapat menggunakan fitur in-boxing dan out-boxing untuk menggunakan int dan Integer sepenuhnya sama. Artinya, Anda dapat melakukan:
int myInt = new Integer(11); Integer myInt2 = myInt;
Masuk dan keluar tinju memungkinkan Anda untuk beralih antara int dan Integer tanpa konversi tambahan (sama untuk
Long
,Double
,Short
juga)Anda boleh menggunakan
int
sepanjang waktu, tetapiInteger
berisi beberapa metode pembantu yang dapat membantu Anda melakukan beberapa operasi kompleks dengan bilangan bulat (sepertiInteger.parseInt(String)
)sumber
a) Kelas objek "Panjang" versus tipe primitif "panjang". (Setidaknya di Jawa)
b) Ada ukuran memori yang berbeda (bahkan tidak jelas) dari tipe primitif:
Java - semuanya jelas: https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
C .. hanya mengacaukan: https://en.wikipedia.org/wiki/C_data_types
sumber