Autoboxing (tidak boleh ubah) - 1

"Hai, Amigo!"

"Hari ini saya akan memberitahu tentang autoboxing . AutoBoxing bermaksud memasukkan sesuatu secara automatik ke dalam kotak."

"Anda akan ingat bahawa Java mempunyai jenis yang mewarisi kelas Objek, serta jenis primitif. Tetapi ternyata perkara mudah sebagai koleksi dan generik hanya berfungsi dengan jenis yang mewarisi Objek."

"Kemudian keputusan dibuat untuk membuat rakan bukan primitif bagi setiap jenis primitif."

Jenis primitif Rakan sejawat bukan primitif
bait Bait
pendek Pendek
int Integer
panjang Panjang
terapung Terapung
berganda berganda
boolean Boolean
char Perwatakan
batal batal

"Tetapi sangat menyusahkan untuk menukar antara jenis ini sepanjang masa:"

int x = 3;
Integer y = new Integer(x + 1);
int z = y.intValue();

"Terutama apabila bekerja secara langsung dengan koleksi:"

Contoh
int[] numbers = new int[10];
ArrayList list = new ArrayList();
for (int i = 0; i < numbers.length; i++)
{
 list.add( new Integer(i));
}

"Itulah sebabnya pencipta Java mencipta «autoboxing» jenis primitif mereka dan 'menyahkotak' kepada rakan bukan primitif mereka."

"Begini cara ia berfungsi:

Apa yang anda lihat Apa sebenarnya yang berlaku
int x = 3;
Integer y = x + 1;
int x = 3;
Integer y = Integer.valueOf(x + 1);
int z = y;
int z = y.intValue();
Boolean b = Boolean.FALSE;
boolean a = b;
Boolean b = Boolean.FALSE;
boolean a = b.booleanValue();
Integer x = null;
int y = x;
Integer x = null; int y = x.intValue(); //Throws an exception

"Semuanya mudah. ​​Anda boleh menetapkan jenis int dan Integer antara satu sama lain, dan pengkompil menguruskan segala-galanya."

"Itu sangat mudah."

"Yep. Tapi ada nuansa yang saya akan bincangkan nanti."