Rumah >Java >javaTutorial >Bagaimanakah Auto Boxing/Unboxing Berfungsi di Java?

Bagaimanakah Auto Boxing/Unboxing Berfungsi di Java?

Barbara Streisand
Barbara Streisandasal
2024-11-14 12:37:02456semak imbas

How Does Auto Boxing/Unboxing Work in Java?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn