1. Senarai jenis pembalut
Anda tahu bahawa Java mempunyai 8 jenis primitif, iaitu jenis yang bukan kelas. Di satu pihak, ini bagus — ia ringkas dan mengambil sedikit ruang. Sebaliknya, kadangkala kelas adalah apa yang kita perlukan. Anda akan mengetahui dengan tepat mengapa itu berlaku dalam pelajaran seterusnya.
Jadi apa yang boleh dilakukan?
Bermula dengan versi kelima Java, setiap jenis primitif memperoleh kelas berkembar. Setiap kelas tersebut menyimpan satu medan dengan nilai jenis tertentu. Kelas ini dipanggil wrapper types , kerana mereka membungkus nilai primitif dalam kelas.
Berikut adalah senarai jenis ini. Adakah anda tahu mana-mana?
Jenis primitif | Kelas pembalut |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Nama jenis primitif bermula dengan huruf kecil, tetapi nama kelas pembalut bermula dengan huruf besar. Beberapa nama kelas juga lebih panjang sedikit: Integer
bukannya int
dan Character
bukannya char
.
Semua objek kelas pembalut tidak boleh diubah ( tidak berubah ).
Kod ringkas untuk Integer
kelas kelihatan seperti ini:
Kod | Catatan |
---|---|
|
Pembina Pembolehubah Kaedah mengembalikan nilai Kaedah statik mencipta Integer objek baharu untuk int pembolehubah |
2. Menukar an int
kepada anInteger
Jenis pembungkus dianggap setara dengan adik beradik primitif mereka: anda boleh membuat objek pembungkus yang sepadan dengan jenis primitif dengan mudah.
Mari kita gunakan jenis int sebagai contoh untuk menganalisis cara jenis primitif berinteraksi dengan jenis pembungkus yang sepadan. Kod untuk menukar daripada an int
ke an Integer
dan sebaliknya akan kelihatan seperti ini:
Untuk menukar an int
kepada Integer
, anda perlu menulis kod ini:
Integer name = new Integer(value);
Di manakah name
nama pembolehubah Integer
, dan value
ialah int
nilai yang dibalut.
Contoh:
Kod | Catatan |
---|---|
|
|
|
|
|
Dan untuk menukar an Integer
kepada an int
, anda perlu menulis kod ini:
int name = variable.intValue();
Di manakah name
nama pembolehubah int
, dan variable
merupakan rujukan kepada Integer
objek.
Contoh:
Kod | Catatan |
---|---|
|
|
|
|
|
|
|
|
3. Autoboxing dan unboxing
Tetapi walaupun operasi mudah dengan Integer
jenis itu tidak mudah untuk ditulis.
Seperti yang kami katakan sebelum ini, Integer
jenisnya tidak boleh diubah ( tidak berubah ). Untuk mencipta Integer
objek dengan nilai baharu int
, anda perlu mencipta Integer
objek baharu secara eksplisit. Walaupun begitu, mudah untuk mendapatkan nilai yang int
disimpan di dalam Integer
objek — hanya panggil intValue()
kaedah tersebut.
Contoh:
Kod | Penerangan |
---|---|
|
Balut 5 dalam Integer objek Dapatkan nilai daripada Integer objek Cipta objek baharu Integer (sama dengan 10) |
Ini kod yang agak menyusahkan, bukankah anda fikir?
Pencipta Java berpendapat demikian, jadi mereka mengajar pengkompil cara melakukan operasi ini secara automatik. Penukaran automatik an int
kepada an Integer
dipanggil autoboxing (memasukkan nilai secara automatik ke dalam kotak), dan operasi terbalik (menukar an Integer
kepada an int
) dipanggil unboxing .
Kod anda | Apa yang dilihat oleh pengkompil |
---|---|
|
|
|
|
|
|
Terima kasih kepada autoboxing dan unboxing, anda boleh menetapkan dengan selamat int
kepada Integer
pembolehubah dan sebaliknya. Anda boleh menulis ungkapan apa-apa kerumitan tanpa membuat perbezaan antara int
dan Integer
jenis.
Contoh:
Kod | Perkara yang akan dihasilkan oleh pengkompil |
---|---|
|
|
|
|
4. Membandingkan pembolehubah pembalut
Autoboxing dan unboxing adalah proses yang mudah dan telus. Kami menggunakan new Integer()
penyata mengikut keperluan, dan kami memanggil intValue()
kaedah itu mengikut keperluan.
Semuanya berfungsi dengan baik dan mudah untuk anda, pengaturcara. Perlu diingat bahawa jika anda membandingkan an Integer
dan an Integer
, maka perbandingan adalah berdasarkan rujukan dan bukan nilai.
Kod | Output konsol |
---|---|
|
|
|
|
Pembolehubah a
dan b
tidak menyimpan int
nilai. Mereka menyimpan rujukan kepada objek. Ini bermakna adalah penting untuk mengingati cara membandingkannya dengan betul:
salah | Betul |
---|---|
|
|
GO TO FULL VERSION