Rumah > Java > javaTutorial > Bagaimana Java Mengendalikan Auto Boxing dan Unboxing?

Bagaimana Java Mengendalikan Auto Boxing dan Unboxing?

Patricia Arquette
Lepaskan: 2024-12-06 03:52:12
asal
631 orang telah melayarinya

How Does Java Handle Auto Boxing and Unboxing?

Auto Boxing dan Unboxing di Java: Penjelasan Komprehensif

Penukaran automatik antara jenis data primitif dan kelas pembalut yang sepadan, yang dikenali sebagai auto boxing dan unboxing, telah diperkenalkan dalam Java 5.0. Walaupun ia mudah, memahami kerja dalaman mekanisme ini boleh membingungkan.

Tinju Auto: Mekanisme Berasaskan Pembina

Bertentangan dengan andaian awal, tinju automatik bukanlah hanya bergantung pada pembina. Sebaliknya, kaedah valueOf() kelas pembalut digunakan. Kaedah ini membenarkan caching dan mengelakkan penciptaan objek yang tidak perlu.

Sebagai contoh, pernyataan:

Integer n = 42;
Salin selepas log masuk

menghimpun kepada:

invokestatic #16                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
Salin selepas log masuk

Nyah kotak: Mendapatkan semula Nilai Primitif

Nyah kotak mendapatkan semula nilai primitif daripada objek pembalut. Sama seperti tinju auto, kaedah intValue() kelas pembalut digunakan.

Sebagai contoh, pernyataan:

int n = Integer.valueOf(42);
Salin selepas log masuk

menghimpun kepada:

invokevirtual #22                 // Method java/lang/Integer.intValue:()I
Salin selepas log masuk

Pengecualian kepada Peraturan

Auto tinju dan nyah kotak biasanya berlaku dengan lancar, tetapi terdapat pengecualian. Contohnya, apabila memasukkan nilai bait ke dalam objek Integer, pengkompil melemparkan ralat:

intObject = byteValue; // ==> Error
Salin selepas log masuk

Had ini timbul kerana kelas pembalut Integer tidak mempunyai pembina dengan parameter bait.

Pertimbangan Lanjut

Spesifikasi Bahasa Java (JLS) perincian auto penukaran tinju dan unboxing dalam §5.1.7 dan §5.1.8, masing-masing. Ia memberikan pemahaman menyeluruh tentang mekanisme asas dan kes tepi.

Atas ialah kandungan terperinci Bagaimana Java Mengendalikan Auto Boxing dan Unboxing?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan