Autoboxing ialah penukaran automatik pengkompil Java antara jenis primitif dan objek kelas pembalut yang sepadan, iaitu, penukaran daripada int kepada Integer, dua kali ganda kepada Double, dll. Unboxing ialah penukaran automatik daripada objek kelas pembalut kepada primitif yang setara, iaitu, Integer kepada int. Ciri ini diperkenalkan dalam versi 1.5 Java.
Pengkompil menggunakan kaedah valueOf() untuk menukar primitif kepada objek pembalut yang sepadan (iaitu autoboxing) secara dalaman, dan dalam kes sebaliknya, ia menggunakan intValue(), doubleValue(), dsb., seperti paradigma untuk menyahkotak.
Mulakan Kursus Pembangunan Perisian Percuma Anda
Pembangunan web, bahasa pengaturcaraan, ujian perisian & lain-lain
Pemetaan kelas jenis dan pembalut primitif dalam java adalah seperti berikut:
Primitive type | Wrapper class |
boolean | Boolean |
byte | Byte |
char | Character |
float | Float |
int | Integer |
long | Long |
short | Short |
double | Double |
Mari ambil ArrayList of Integers dan gunakan konsep unboxing.
import java.util.ArrayList; public class MyClass { public static void main(String args[]) <em>{</em> ArrayList<Integer> intlist = new ArrayList<Integer>(); //wrapper Integer objects being added here intlist.add(1); interest.add(2); //auto-unboxing is happening here int x = intlist.get(0); System.out.println(x); } }
Oleh itu, dalam contoh di atas, semasa menambah nilai kepada x, kita melihat bahawa x nampaknya primitif. Akibatnya, nyahkotak berlaku di sini secara automatik semasa tugasan selesai.
public class MyClass { public static void main(String args[]) { Integer sum =0; for(int i=0;i<10;i++) { sum = sum + i; } System.out.println(sum); } }
Pertimbangkan coretan yang diletakkan di bawah; apakah hasil daripada ini?
public class Main { public static void main(String[] args) { Integer m = 34123; Integer x = 34123; System.out.println(x==m); } }
public class Main { public static void main(String[] args) { Integer m = 100; Integer x = 100; System.out.println(x==m); } }
Ini akan dinilai kepada nilai "benar", kerana 100 terdapat dalam kumpulan literal.
public class Main { public static void main(String[] args) { Overload obj = new Overload(); int i =5; obj.printval(5); Integer m = i; obj.printval(m); } } class Overload { public void printval(int i) { System.out.println("printing the unboxed value "+ i); } public void printval(Integer i) { System.out.println("printing the autoboxed value "+ i); } }
Output:
Nota: Anda boleh melaksanakan program di atas dalam mana-mana IDE untuk mendapatkan output di atas.Kami melihat kes penggunaan autoboxing dan unboxing dan betapa tersiratnya konsep ini, bersama dengan kebaikan dan keburukannya. Ia mesti digunakan dengan berhati-hati apabila mengekod; jika tidak, ia boleh menambah overhed penukaran pengiraan yang tidak perlu. Akibatnya, penukaran mesti dilakukan secara primitif untuk mengelakkan overhed pengumpulan sampah berlebihan dan penciptaan objek sementara. Kami juga melihat kes penggunaan autoboxing dengan konsep lebihan di Jawa. Anda boleh menyemak beberapa lagi kekangan bersama ini.
Atas ialah kandungan terperinci Autoboxing dan Unboxing di Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!