Rumah >Java >javaTutorial >Bagaimanakah Auto Boxing dan Unboxing Benar-benar Berfungsi di Java?

Bagaimanakah Auto Boxing dan Unboxing Benar-benar Berfungsi di Java?

Linda Hamilton
Linda Hamiltonasal
2024-11-19 19:11:03736semak imbas

How Do Auto Boxing and Unboxing Really Work in Java?

Auto Boxing dan Unboxing di Java: Menyingkap Mekanisme Tersembunyi

Auto boxing dan unboxing, diperkenalkan dalam Java JDK 5.0, memudahkan penukaran antara jenis primitif dan kelas pembalut yang sepadan. Walau bagaimanapun, cara kerja sebenar konsep ini boleh membingungkan.

Auto Boxing: The Multifaceted Wrapper

Pada mulanya, ia mungkin kelihatan seperti auto boxing bergantung semata-mata pada pembina yang dilaksanakan dalam kelas pembalut. Walau bagaimanapun, menyelidiki kod bait untuk Integer.class mendedahkan cerita yang berbeza.

Integer n = 42;

Mengkompil kepada:

0: bipush        42
2: invokestatic  #16                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
5: astore_1      

Kod bait menggunakan kaedah valueOf() dan bukannya pembina. Pendekatan ini menawarkan kelebihan seperti caching, mengelakkan penciptaan objek berlebihan.

Auto Nyah Kotak: Mendapatkan Kembali Intipati Primitif

Begitu juga, nyahkotak automatik melibatkan mendapatkan semula nilai primitif yang dibalut dalam objek melalui kaedah intValue() untuk integer, atau kaedah analog untuk jenis pembalut lain.

int n = Integer.valueOf(42);

Disusun kepada:

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      

Kesimpulan

Pada dasarnya, tinju automatik dan nyahboxing beroperasi dengan menggunakan yang sesuai kaedah statik valueOf() atau instance intValue() pada kelas pembalut. Mekanisme ini menyediakan penukaran yang lancar antara perwakilan primitif dan berasaskan objek, meningkatkan kebolehbacaan dan kecekapan kod.

Atas ialah kandungan terperinci Bagaimanakah Auto Boxing dan Unboxing Benar-benar 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