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

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

Susan Sarandon
Susan Sarandonasal
2024-11-20 02:59:01725semak imbas

How Does Auto Boxing and Unboxing Really Work in Java?

Auto Boxing dan Unboxing in Java: A Deeper Dive

Sejak diperkenalkan dalam JDK 5.0, auto boxing dan unboxing telah menjadi ciri yang mudah. di Jawa. Walau bagaimanapun, kekeliruan timbul apabila cuba memahami mekanisme asas proses ini.

Auto Boxing

Sebelum ini, dipercayai bahawa auto boxing bergantung semata-mata pada pembina yang dilaksanakan dalam wrapper kelas. Walau bagaimanapun, meneliti kod bait mendedahkan cerita yang berbeza.

Untuk memasukkan int ke dalam Integer:

Integer n = 42;

Pengkompil menjana:

bipush 42
invokestatic java/lang/Integer.valueOf:(I)Ljava/lang/Integer;

Ini menunjukkan bahawa kaedah valueOf() digunakan bukannya pembina. Pilihan reka bentuk ini membolehkan caching dan menghalang penciptaan objek yang tidak perlu semasa bertinju.

Autonyah Kotak

Begitu juga, nyahboxing tidak melibatkan pembina secara langsung. Sebagai contoh, untuk menyahkotak Integer kepada int:

int n = Integer.valueOf(42);

Kod bait yang setara ialah:

bipush 42
invokestatic java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
invokevirtual java/lang/Integer.intValue:()I

Di sini, kaedah intValue() mendapatkan semula nilai primitif daripada pembalut objek.

Kesimpulan

Tinju automatik dan nyahboxing di Java dilaksanakan melalui kaedah valueOf() dan *Value() masing-masing. Kaedah ini membolehkan penukaran yang cekap antara kelas pembalut dan jenis primitif, memberikan kemudahan dan fleksibiliti yang diharap oleh pembangun.

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