CodeGym /Java Blog /Acak /Kelas Pembungkus di Jawa
John Squirrels
Level 41
San Francisco

Kelas Pembungkus di Jawa

Dipublikasikan di grup Acak
Hai! Anda sudah sangat mengenal tipe-tipe primitif, dan telah banyak bekerja dengan mereka. Dalam pemrograman (dan khususnya Java), primitif memiliki banyak keuntungan: mereka menggunakan sedikit memori (dan dengan demikian membuat program lebih efisien) dan memiliki rentang nilai yang digambarkan dengan jelas. Namun, saat belajar bahasa Jawa, kita sudah sering mengulangi mantra “semua yang ada di Jawa adalah objek”. Tapi primitif langsung bertentangan dengan kata-kata itu. Mereka bukan objek. Jadi, apakah prinsip "semuanya adalah objek" kita salah? Sebenarnya tidak. Di Jawa, setiap tipe primitif memiliki saudara kembar, kelas pembungkus.

Apa itu Kelas Pembungkus?

Pembungkus adalah kelas khusus yang menyimpan primitif secara internal. Tetapi karena ini adalah kelas, Anda dapat membuat turunannya. Mereka menyimpan nilai-nilai primitif secara internal, tetapi tetap merupakan objek nyata. Nama kelas pembungkus sangat mirip dengan (atau persis sama dengan) nama primitif yang sesuai. Jadi, mereka mudah diingat.
Kelas Pembungkus untuk Tipe Data Primitif
Tipe Data Primitif Kelas Pembungkus
int Bilangan bulat
pendek Pendek
panjang Panjang
byte Byte
mengambang Mengambang
dobel Dobel
arang Karakter
boolean Boolean
Objek pembungkus dibuat dengan cara yang sama seperti objek lainnya:

public static void main(String[] args) {

   Integer i = new Integer(682);
  
   Double d = new Double(2.33);
  
   Boolean b = new Boolean(false);
}
Kelas pembungkus memungkinkan kita mengurangi kekurangan tipe primitif. Yang paling jelas adalah bahwa primitif tidak memiliki metode. Misalnya, mereka tidak memiliki metode toString() , jadi Anda tidak dapat, misalnya, mengubah int menjadi String . Tapi kelas pembungkus Integer membuatnya mudah.

public static void main(String[] args) {

   Integer i = new Integer(432);
  
   String s = i.toString();
}
Namun, mengonversi ke arah lain bisa lebih rumit. Katakanlah kita memiliki String , yang kita tahu pasti berisi angka. Terlepas dari itu, tidak ada cara asli untuk menggunakan int primitif untuk mengekstraksi angka dari String dan mengubahnya menjadi angka. Tapi, kita bisa dengan kelas pembungkusnya.

public static void main(String[] args) {

   String s = "1166628";

   Integer i = Integer.parseInt(s);

   System.out.println(i);
}
Keluaran:
1166628
Kami berhasil mengekstraksi angka dari String dan menugaskannya ke variabel referensi Integer i . Omong-omong, tentang referensi. Anda sudah tahu bahwa argumen diteruskan ke metode dengan cara yang berbeda: primitif berdasarkan nilai, dan objek melalui referensi. Anda dapat menggunakan pengetahuan ini saat membuat metode Anda sendiri: misalnya, jika metode Anda menggunakan bilangan pecahan tetapi Anda memerlukan logika untuk meneruskan referensi, Anda dapat meneruskan argumen Double / Float ke metode tersebut alih-alih double / float . Selain metode kelas pembungkus, bidang statisnya juga bisa sangat nyaman. Misalnya, bayangkan Anda memiliki tugas berikut: tampilkan semaksimal mungkinint nilai, diikuti dengan nilai minimum yang mungkin. Masalah ini tampaknya agak mendasar. Tapi tanpa Google, tidak mungkin Anda bisa melakukannya. Tetapi pembungkus memungkinkan Anda menangani "tugas biasa" seperti itu dengan mudah:

public class Main {
   public static void main(String[] args) {

       System.out.println(Integer.MAX_VALUE);
       System.out.println(Integer.MIN_VALUE);
   }
}
Bidang-bidang ini membuat Anda tidak terganggu untuk menyelesaikan tugas yang lebih serius. Belum lagi fakta bahwa mengetik 2147483647 (yang merupakan nilai MAX_VALUE) bukanlah prestasi kecil! :) Selain itu, di pelajaran sebelumnya, kami menunjukkan bahwa objek pembungkus tidak dapat diubah.

public static void main(String[] args) {

   Integer a = new Integer(0);
   Integer b = new Integer(0);

   b = a;
   a = 1;
   System.out.println(b);
}
Keluaran:
0
Status objek yang awalnya ditunjuk oleh a tidak berubah (karena nilai b juga akan berubah). Seperti halnya String s, alih-alih mengubah status objek pembungkus, objek yang sama sekali baru dibuat di memori. Jadi, mengapa pencipta Java akhirnya memutuskan untuk meninggalkan tipe primitif dalam bahasa tersebut? Karena semuanya harus berupa objek, dan kita memiliki kelas pembungkus yang dapat mengekspresikan semua yang diekspresikan oleh primitif, mengapa tidak hanya menyimpan pembungkus dalam bahasa dan menghapus primitif? Jawabannya sederhana: kinerja. Tipe primitif disebut primitif karena mereka tidak memiliki banyak fitur objek "kelas berat". Ya, objek memiliki banyak metode mudah, tetapi Anda tidak selalu membutuhkannya. Terkadang, yang Anda butuhkan hanyalah angka 33, atau 2.62, atau true / false . Dalam situasi di mana keunggulan objek tidak penting dan tidak diperlukan agar program berfungsi, primitif jauh lebih cocok untuk tugas tersebut.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION