1. Dhaptar jinis pambungkus

Sampeyan ngerti yen Jawa duwe 8 jinis primitif, yaiku jinis sing dudu kelas. Ing tangan siji, iki apik - padha prasaja lan njupuk munggah sethitik papan. Ing sisih liya, kadhangkala kelas mung sing kita butuhake. Sampeyan bakal ngerti persis apa sebabe ana ing pawulangan sabanjure.

Dadi apa sing bisa ditindakake?

Diwiwiti karo versi Jawa kaping lima, saben jinis primitif entuk kelas kembar. Saben kelas kasebut nyimpen lapangan siji kanthi nilai saka jinis tartamtu. Kelas kasebut diarani jinis pambungkus , amarga mbungkus nilai primitif ing kelas.

Punika dhaptar jinis kasebut. Apa sampeyan ngerti?

Tipe primitif Kelas pambungkus
byte
Byte
short
Short
int
Integer
long
Long
float
Float
double
Double
char
Character
boolean
Boolean

Jeneng jinis primitif diwiwiti kanthi huruf cilik, nanging jeneng kelas bungkus diwiwiti kanthi huruf gedhe. Sawetara jeneng kelas uga rada suwe: Integerinstead of intи Characterinstead of char.

Kabeh obyek saka kelas pambungkus ora bisa diganti ( ora bisa diganti ).

Kode sing disederhanakake kanggo Integerkelas katon kaya iki:

Kode Cathetan
public class Integer
{
   private int value;

   Integer(int x)
   {
      this.value = x;
   }

   public int intValue()
   {
      return this.value;
   }

   public static Integer valueOf(int x)
   {
      return new Integer(x);
   }
}




Konstruktor Variabel




Metode ngasilake nilai




Metode statis nggawe Integerobyek anyar kanggo intvariabel

2. Ngonversi an intdadi anInteger

Jinis pambungkus dianggep minangka mitra kanggo sedulur primitif: sampeyan bisa kanthi gampang nggawe obyek pambungkus sing cocog karo jinis primitif.

Ayo nggunakake jinis int minangka conto kanggo nganalisa kepiye jinis primitif sesambungan karo jinis bungkus sing cocog. Kode kanggo ngowahi saka an intmenyang Integerlan kosok balene bakal katon kaya iki:

Kanggo ngowahi a intdadi Integer, sampeyan kudu nulis kode iki:

Integer name = new Integer(value);

Where namejeneng variabel Integer, lan valuenilai kebungkus int.

Tuladha:

Kode Cathetan
Integer age = new Integer(18);
Integer hundred = new Integer(100);
Integer zero = new Integer(0);

Lan kanggo ngowahi an Integerdadi int, sampeyan kudu nulis kode iki:

int name = variable.intValue();

Where namejeneng variabel int, lan variablereferensi kanggo Integerobyek.

Tuladha:

Kode Cathetan
Integer age = new Integer(18);
int x = age.intValue();

x == 18
Integer hundred = new Integer(100);
int y = hundred.intValue();

y == 100
Integer zero = new Integer(0);
int z = zero.intValue();


z == 0
int i = 110;
Integer zero = new Integer(i);
int z = zero.intValue();

z == 110

3. Autoboxing lan unboxing

Nanging malah operasi prasaja karo Integerjinis ora gampang kanggo nulis.

Kaya sing wis dakkandhakake sadurunge, Integerjinis kasebut ora bisa diganti ( ora bisa diganti ). Kanggo nggawe Integerobyek kanthi nilai anyar int, sampeyan kudu nggawe Integerobyek anyar kanthi jelas. Yen ngandika, iku gampang kanggo njaluk Nilai saka intdisimpen ing Integerobyek - mung nelpon intValue()cara.

Tuladha:

Kode Katrangan
Integer a = Integer.valueOf(5);
int b = a.intValue();
Integer c = new Integer(b + 5)
Bungkus 5obyek Entuk nilai saka obyek Gawe obyek anyar (padha Integerkaro 10)
Integer
Integer

Iki kode sing rada rumit, apa sampeyan mikir?

Pangripta Jawa nganggep mangkono, mula dheweke ngajari kompiler carane nindakake operasi kasebut kanthi otomatis. Konversi otomatis saka an intmenyang an Integerdiarani autoboxing (otomatis nglebokake nilai menyang kothak), lan operasi mbalikke (ngowahi an Integerdadi int) diarani unboxing .

Kode sampeyan Apa compiler ndeleng
Integer a = 10;
Integer a = Integer.valueOf(10);
int b = a;
int b = a.intValue();
Integer c = a + b;
Integer c = Integer.valueOf(a.intValue() + b);

Thanks kanggo autoboxing lan unboxing, sampeyan bisa kanthi aman nemtokake intvariabel Integerlan kosok balene. Sampeyan bisa nulis ekspresi saka kerumitan apa wae tanpa mbedakake antarane intlan Integerjinis.

Tuladha:

Kode Apa compiler bakal generate
Integer a = 5;
int b = a;
Integer c = a + b;
int d = a + b + c;
Integer a = Integer.valueOf(5);
int b = a.intValue();
Integer c = Integer.valueOf(a.intValue() + b);
int d = a.intValue() + b + c.intValue();
Integer a = 5;
int b = 5;

if (a == b)
{
   ...
}
Integer a = Integer.valueOf (5);
int b = 5;

if (a.intValue() == b)
{
   ...
}


4. Mbandhingake variabel pambungkus

Autoboxing lan unboxing minangka proses sing prasaja lan transparan. Kita nggunakake new Integer()statements minangka needed, lan kita nelpon intValue()cara sing perlu.

Kabeh dianggo becik lan gampang kanggo sampeyan, programmer. Elinga yen sampeyan mbandhingake an Integerlan Integer, mula perbandingan kasebut adhedhasar referensi lan dudu nilai.

Kode Output konsol
Integer a = 1000;
Integer b = 1000;

System.out.println(a == b);



false
Integer a = 1000;
Integer b = 1000;

System.out.println(a.equals(b));



true

Variabel alan bora nyimpen intnilai. Padha nyimpen referensi kanggo obyek. Tegese penting kanggo ngelingi carane mbandhingake kanthi bener:

salah bener
Integer a = 1000;
Integer b = 1000;
if (a == b)
{
   ...
}
Integer a = 1000;
Integer b = 1000;
if (a.equals(b))
{
   ...
}