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 mungkin
int 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.
GO TO FULL VERSION