Auto Boxing/Unboxing in Java
Automatic boxing and unboxing in Java memudahkan penukaran jenis antara jenis data primitif dan kelas pembalut yang sepadan. Diperkenalkan dalam JDK 5.0, ciri ini menyediakan penyepaduan yang lancar bagi kedua-dua perwakilan ini.
Tinju Auto
Apabila memberikan nilai primitif kepada pembolehubah kelas pembalut, tinju automatik berlaku . Bertentangan dengan andaian bahawa pembina kelas pembalut digunakan, kaedah statik valueOf() digunakan sebaliknya. Ini jelas dalam kod bait yang dijana untuk kod berikut:
Integer n = 42;
0: bipush 42 2: invokestatic #16 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; 5: astore_1
Kaedah valueOf() menyimpan cache objek yang dicipta, memastikan kecekapan sumber.
Auto Nyah Kotak
Sebaliknya, apabila mengekstrak nilai primitif daripada pembolehubah kelas pembalut, auto unboxing berlaku. Proses ini menggunakan kaedah intValue() untuk integer (dan kaedah analog untuk jenis lain), seperti yang digambarkan dalam bytecode untuk:
int n = Integer.valueOf(42);
0: bipush 42 2: invokestatic #16 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; 5: invokevirtual #22 // Method java/lang/Integer.intValue:()I 8: istore_1
Kaedah ini hanya mengembalikan nilai primitif yang disimpan dalam objek pembalut .
Ringkasnya, auto boxing/unboxing melibatkan penggunaan kaedah statik valueOf() dan intValue() (atau serupa) untuk menukar secara telus antara perwakilan kelas primitif dan pembalut. Ini memudahkan kod dan meningkatkan prestasi dengan menggunakan mekanisme caching.
Atas ialah kandungan terperinci Bagaimanakah Auto Boxing/Unboxing Berfungsi di Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!