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: Integerinstead of intи Characterinstead of char.
Semua objek kelas pembalut tidak boleh diubah ( tidak berubah ).
Kod ringkas untuk Integerkelas kelihatan seperti ini:
| Kod | Catatan |
|---|---|
|
Pembina Pembolehubah Kaedah mengembalikan nilai Kaedah statik mencipta Integerobjek baharu untuk intpembolehubah |
2. Menukar an intkepada 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 intkepada an Integerdan sebaliknya akan kelihatan seperti ini:
Untuk menukar an intkepada Integer, anda perlu menulis kod ini:
Integer name = new Integer(value);
Di manakah namenama pembolehubah Integer, dan valueialah intnilai yang dibalut.
Contoh:
| Kod | Catatan |
|---|---|
|
|
|
|
|
Dan untuk menukar an Integerkepada an int, anda perlu menulis kod ini:
int name = variable.intValue();
Di manakah namenama pembolehubah int, dan variablemerupakan rujukan kepada Integerobjek.
Contoh:
| Kod | Catatan |
|---|---|
|
|
|
|
|
|
|
|
3. Autoboxing dan unboxing
Tetapi walaupun operasi mudah dengan Integerjenis itu tidak mudah untuk ditulis.
Seperti yang kami katakan sebelum ini, Integerjenisnya tidak boleh diubah ( tidak berubah ). Untuk mencipta Integerobjek dengan nilai baharu int, anda perlu mencipta Integerobjek baharu secara eksplisit. Walaupun begitu, mudah untuk mendapatkan nilai yang intdisimpan di dalam Integerobjek — hanya panggil intValue()kaedah tersebut.
Contoh:
| Kod | Penerangan |
|---|---|
|
Balut 5dalam Integerobjek Dapatkan nilai daripada Integerobjek 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 intkepada an Integerdipanggil autoboxing (memasukkan nilai secara automatik ke dalam kotak), dan operasi terbalik (menukar an Integerkepada an int) dipanggil unboxing .
| Kod anda | Apa yang dilihat oleh pengkompil |
|---|---|
|
|
|
|
|
|
Terima kasih kepada autoboxing dan unboxing, anda boleh menetapkan dengan selamat intkepada Integerpembolehubah dan sebaliknya. Anda boleh menulis ungkapan apa-apa kerumitan tanpa membuat perbezaan antara intdan Integerjenis.
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 Integerdan an Integer, maka perbandingan adalah berdasarkan rujukan dan bukan nilai.
| Kod | Output konsol |
|---|---|
|
|
|
|
Pembolehubah adan btidak menyimpan intnilai. Mereka menyimpan rujukan kepada objek. Ini bermakna adalah penting untuk mengingati cara membandingkannya dengan betul:
| salah | Betul |
|---|---|
|
|
GO TO FULL VERSION