CodeGym /Blog Jawa /Acak /Kelas Wrapper ing Jawa
John Squirrels
tingkat
San Francisco

Kelas Wrapper ing Jawa

Diterbitake ing grup
Hi! Sampeyan wis kenal karo jinis primitif, lan wis kerja keras karo dheweke. Ing program (lan Jawa ing tartamtu), primitif duwe akeh kaluwihan: padha nggunakake memori sethitik (lan kanthi mangkono nggawe program luwih efisien) lan duwe sawetara cetha delineated saka nilai. Nanging, nalika sinau basa Jawa, kita wis kerep mbaleni mantra "kabeh ing Jawa iku obyek". Nanging primitif langsung mbantah tembung kasebut. Dheweke dudu obyek. Dadi, apa prinsip "kabeh iku obyek" palsu? Bener, ora. Ing Jawa, saben jinis primitif duwe sedulur kembar, yaiku kelas bungkus.

Apa Kelas Wrapper?

A wrapper minangka kelas khusus sing nyimpen primitif internal. Nanging amarga iku kelas, sampeyan bisa nggawe conto. Padha nyimpen nilai primitif internal, nanging isih obyek nyata. Jeneng kelas Wrapper meh padha karo (utawa persis padha karo) jeneng primitif sing cocog. Dadi, dheweke gampang dieling-eling.
Kelas Wrapper kanggo Jinis Data Primitif
Jinis Data Primitif Kelas Wrapper
int Ongko
cendhak Singkat
dawa dawa
bait Byte
ngambang ngambang
pindho pindho
char Watak
boolean Boolean
Objek Wrapper digawe kanthi cara sing padha karo obyek liyane:

public static void main(String[] args) {

   Integer i = new Integer(682);
  
   Double d = new Double(2.33);
  
   Boolean b = new Boolean(false);
}
Kelas Wrapper supaya kita nyuda kekurangan jinis primitif. Sing paling jelas yaiku primitif ora duwe metode. Contone, padha ora duwe toString () cara, supaya sampeyan ora bisa, contone, Ngonversi int kanggo String a . Nanging kelas pambungkus Integer ndadekake iki gampang.

public static void main(String[] args) {

   Integer i = new Integer(432);
  
   String s = i.toString();
}
Nanging, ngowahi ing arah liyane bisa dadi trickier. Ayo kita duwe String , sing kita ngerti manawa ngemot nomer. Ora preduli, ora ana cara asli nggunakake int primitif kanggo ngekstrak nomer saka String lan ngowahi dadi nomer. Nanging, kita bisa karo kelas pambungkus.

public static void main(String[] args) {

   String s = "1166628";

   Integer i = Integer.parseInt(s);

   System.out.println(i);
}
Output:
1166628
Kita kasil dijupuk nomer saka String lan diutus kanggo variabel referensi Integer i . Miturut cara, babagan referensi. Sampeyan wis ngerti manawa argumen diterusake menyang metode kanthi cara sing beda: primitif miturut nilai, lan obyek kanthi referensi. Sampeyan bisa nggunakake kawruh iki nalika nggawe cara dhewe: contone, yen cara sampeyan nggunakake nomer pecahan nanging sampeyan perlu logika kanggo pass dening referensi, sampeyan bisa pass Double / Float argumen kanggo cara tinimbang pindho / float . Saliyane metode kelas pambungkus, lapangan statis uga trep banget. Contone, bayangake sampeyan duwe tugas ing ngisor iki: nampilake maksimalnilai int , ngiring dening nilai minimal bisa. Masalah iki katon rada dhasar. Nanging tanpa Google, ora mungkin sampeyan bisa nindakake. Nanging pambungkus ngidini sampeyan gampang nangani "tugas biasa" kasebut:

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

       System.out.println(Integer.MAX_VALUE);
       System.out.println(Integer.MIN_VALUE);
   }
}
Kolom kasebut nyegah sampeyan ora keganggu kanggo ngrampungake tugas sing luwih serius. Ora kanggo sebutno kasunyatan sing ngetik ing 2147483647 (sing kelakon dadi nilai MAX_VALUE) ora feat cilik! :) Menapa malih, ing pawulangan sadurungé, kita nuding metu sing obyek wrapper iku immutable.

public static void main(String[] args) {

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

   b = a;
   a = 1;
   System.out.println(b);
}
Output:
0
Kahanan obyek sing asline ditunjuk dening a ora owah (amarga nilai b uga bakal diganti). Kaya String s, tinimbang ngganti kahanan obyek pambungkus, obyek sing anyar digawe ing memori. Dadi, apa sebabe pangripta Jawa pungkasane mutusake ninggalake jinis primitif ing basa kasebut? Amarga kabeh kudu dadi obyek, lan kita duwe kelas bungkus sing bisa nyebutake kabeh sing diucapake primitif, kenapa ora mung nyimpen bungkus ing basa kasebut lan mbusak primitif? Jawaban iki prasaja: kinerja. Jinis primitif diarani primitif amarga ora duwe akeh fitur "bobot abot" saka obyek. Ya, obyek duwe akeh cara sing trep, nanging sampeyan ora mbutuhake. Kadhangkala, sampeyan mung butuh nomer 33, utawa 2.62, utawa bener / salah . Ing kahanan ing ngendi kaluwihan obyek ora penting lan ora dibutuhake kanggo program bisa digunakake, primitif luwih cocog kanggo tugas kasebut.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION