CodeGym /Blog Java /rawak /Kelas Pembungkus di Jawa
John Squirrels
Tahap
San Francisco

Kelas Pembungkus di Jawa

Diterbitkan dalam kumpulan
Hai! Anda sudah mengetahui jenis primitif, dan telah bekerja sedikit dengan mereka. Dalam pengaturcaraan (dan Java khususnya), primitif mempunyai banyak kelebihan: mereka menggunakan sedikit memori (dan dengan itu menjadikan program lebih cekap) dan mempunyai julat nilai yang jelas. Walau bagaimanapun, semasa mempelajari Java, kami sudah sering mengulangi mantra "segala-galanya di Jawa adalah objek". Tetapi primitif secara langsung bertentangan dengan kata-kata itu. Mereka bukan objek. Jadi, adakah prinsip "semuanya adalah objek" kita palsu? Sebenarnya, tidak. Di Jawa, setiap jenis primitif mempunyai saudara kembar, kelas pembungkus.

Apakah itu Kelas Pembungkus?

Pembalut ialah kelas khas yang menyimpan primitif secara dalaman. Tetapi kerana ia adalah kelas, anda boleh mencipta kejadiannya. Mereka menyimpan nilai primitif secara dalaman, tetapi masih merupakan objek sebenar. Nama kelas pembungkus sangat serupa dengan (atau sama persis dengan) nama primitif yang sepadan. Jadi, mereka mudah diingati.
Kelas Pembungkus untuk Jenis Data Primitif
Jenis Data Primitif Kelas Pembungkus
int Integer
pendek Pendek
panjang Panjang
bait Bait
terapung Terapung
berganda berganda
char Perwatakan
boolean Boolean
Objek pembungkus dicipta dengan cara yang sama seperti objek lain:

public static void main(String[] args) {

   Integer i = new Integer(682);
  
   Double d = new Double(2.33);
  
   Boolean b = new Boolean(false);
}
Kelas pembungkus membolehkan kami mengurangkan kelemahan jenis primitif. Yang paling jelas ialah primitif tidak mempunyai kaedah. Sebagai contoh, mereka tidak mempunyai kaedah toString() , jadi anda tidak boleh, sebagai contoh, menukar int kepada String . Tetapi kelas pembalut Integer menjadikannya mudah.

public static void main(String[] args) {

   Integer i = new Integer(432);
  
   String s = i.toString();
}
Walau bagaimanapun, menukar ke arah lain boleh menjadi lebih rumit. Katakan kita mempunyai String , yang kita tahu pasti mengandungi nombor. Walau apa pun, tiada cara asli untuk menggunakan int primitif untuk mengekstrak nombor daripada String dan menukarnya kepada nombor. Tetapi, kita boleh dengan kelas pembalut.

public static void main(String[] args) {

   String s = "1166628";

   Integer i = Integer.parseInt(s);

   System.out.println(i);
}
Pengeluaran:
1166628
Kami berjaya mengekstrak nombor daripada String dan memberikannya kepada pembolehubah rujukan Integer i . Dengan cara ini, mengenai rujukan. Anda sudah tahu bahawa hujah dihantar kepada kaedah dengan cara yang berbeza: primitif mengikut nilai dan objek melalui rujukan. Anda boleh menggunakan pengetahuan ini apabila mencipta kaedah anda sendiri: contohnya, jika kaedah anda menggunakan nombor pecahan tetapi anda memerlukan logik untuk lulus melalui rujukan, anda boleh menghantar argumen Double / Float kepada kaedah dan bukannya double / float . Selain kaedah kelas pembalut, medan statik mereka juga boleh menjadi sangat mudah. Sebagai contoh, bayangkan anda mempunyai tugas berikut: paparkan maksimum yang mungkinnilai int , diikuti dengan nilai minimum yang mungkin. Masalah ini kelihatan agak asas. Tetapi tanpa Google, tidak mungkin anda boleh melakukannya. Tetapi pembalut membolehkan anda mengendalikan "tugas duniawi" dengan mudah:

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

       System.out.println(Integer.MAX_VALUE);
       System.out.println(Integer.MIN_VALUE);
   }
}
Bidang ini menghalang anda daripada terganggu daripada mencapai tugas yang lebih serius. Apatah lagi fakta bahawa menaip dalam 2147483647 (yang kebetulan merupakan nilai MAX_VALUE) bukanlah sesuatu yang kecil! :) Selain itu, dalam pelajaran sebelumnya, kami menunjukkan bahawa objek pembalut tidak boleh 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);
}
Pengeluaran:
0
Keadaan objek yang asalnya ditunjuk oleh a tidak berubah (kerana nilai b juga akan berubah). Seperti String s, bukannya menukar keadaan objek pembalut, objek yang sama sekali baru dicipta dalam ingatan. Jadi, mengapakah pencipta Java akhirnya memutuskan untuk meninggalkan jenis primitif dalam bahasa? Memandangkan semuanya harus menjadi objek, dan kami mempunyai kelas pembalut yang boleh menyatakan semua yang dinyatakan oleh primitif, mengapa tidak hanya menyimpan pembalut dalam bahasa dan mengalih keluar primitif? Jawapannya mudah: prestasi. Jenis primitif dipanggil primitif kerana mereka kekurangan banyak ciri "berat" objek. Ya, objek mempunyai banyak kaedah yang mudah, tetapi anda tidak selalu memerlukannya. Kadangkala, anda hanya perlukan nombor 33, atau 2.62, atau benar / salah . Dalam situasi di mana kelebihan objek tidak penting dan tidak diperlukan untuk program berfungsi, primitif jauh lebih sesuai untuk tugas itu.
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION