Kelas Pembungkus
| English | Bahasa Indonesia |
|---|---|
| wrapper class/ˈræpə klæs/ | kelas pembungkus |
| autoboxing/ˌɔːtəʊˈbɒksɪŋ/ | autoboxing |
| unboxing/ʌnˈbɒksɪŋ/ | unboxing |
Pengkotakan (Boxing) primitif
- Beberapa struktur Java (seperti
ArrayList) menyimpan objek, bukan primitif. - Kelas pembungkus membungkus primitif dalam sebuah objek:
Integermembungkusint,Doublemembungkusdouble. Integer boxed = Integer.valueOf(5);memasukkanint5ke dalam sebuah objek.- Kelas pembungkus memungkinkan primitif berada di tempat yang hanya mengizinkan objek.
Autoboxing dan unboxing
- Java secara otomatis mengonversi — autoboxing dan unboxing.
Integer x = 5;melakukan autoboxing terhadap5;int y = x;melakukan unboxing kembali.- Jadi
list.add(5)berfungsi meskipun daftar tersebut berisi objekInteger. - Anda jarang menulis
Integer.valueOfsecara manual — autoboxing melakukannya.
Mengapa ArrayList membutuhkannya
ArrayList<Integer>menyimpan objekInteger, karena generik memerlukan tipe referensi.- Anda tidak bisa menulis
ArrayList<int>— primitif bukan objek. - Autoboxing memungkinkan Anda menambahkan dan membaca primitif
intbiasa dengan mudah. Double,Boolean, dll. memainkan peran yang sama untuk primitif mereka.
Bandingkan kelas pembungkus dengan equals
- Dua objek
Integerharus dibandingkan dengan.equals(), bukan==. ==membandingkan referensi;.equals()membandingkan nilai yang dibungkus.- (Java menyimpan cache Integer kecil, sehingga
==kadang-kadang terlihat bekerja — jangan andalkan hal ini.) - Aturan "gunakan
.equals()untuk objek" yang sama dariStringberlaku di sini.
Kelas pembungkus adalah objek, jadi bandingkan nilainya dengan .equals(), bukan ==. == menguji identitas referensi; untuk dua objek Integer dengan nilai yang sama ia bisa menjadi false. Dan Anda tidak dapat memparametrisasi koleksi dengan primitif — itu ArrayList<Integer>, bukan ArrayList<int>. Autoboxing menjembatani kesenjangan agar Anda tetap bisa menambahkan primitif int biasa.
Kelas pembungkus dengan ArrayList:
ArrayList<Integer> nums = new ArrayList<Integer>();nums.add(5);—int5di-autoboxing menjadiInteger.int first = nums.get(0);—Integerunboxed kembali keint.
Sebuah kelas pembungkus (Integer, Double, Boolean) membungkus primitif dalam sebuah objek agar dapat masuk ke tempat objek diperlukan — seperti ArrayList<Integer> (Anda tidak bisa menulis ArrayList<int>). Autoboxing dan unboxing melakukan konversi secara otomatis. Bandingkan objek pembungkus dengan .equals(), bukan ==.
Autoboxing dan unboxing
Konversi int ↔ Integer terjadi secara otomatis.
Kelas pembungkus mana yang membungkus int?
Integer membungkus int; Double membungkus double.
Mengapa ArrayList of ints harus dideklarasikan sebagai ArrayList
Anda tidak bisa menulis ArrayList
Dua objek Integer harus dibandingkan dengan...
Kelas pembungkus adalah objek — gunakan .equals() untuk nilainya.
Dalam nums.add(5), int 5 dibungkus secara otomatis menjadi Integer (autoboxing).
Autoboxing mengonversi primitif menjadi objek pembungkus.
Kelas yang membungkus tipe primitif dalam objek adalah kelas ___ (satu kata).
Integer, Double, Boolean adalah kelas wrapper.