Rumah >Java >javaTutorial >Bagaimanakah Auto Boxing dan Unboxing Benar-benar Berfungsi di 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!