Objek Pembungkus Integer dan Kejadian Dikongsi: Melebihi Nilai 127
Bahasa pengaturcaraan Java menyediakan kelas pembalut untuk mewakili jenis data primitif sebagai objek . Integer ialah satu kelas pembungkus yang membungkus jenis primitif int. Aspek menarik bagi objek pembalut Integer ialah gelagat mereka berkenaan kejadian yang dikongsi.
Dalam Alam 127
Seperti yang diperhatikan dengan betul oleh soalan, objek pembalut Integer sememangnya berkongsi perkara yang sama contoh dalam julat nilai [-128, 127]. Tingkah laku ini ditakrifkan secara eksplisit oleh Spesifikasi Bahasa Java (JLS) dalam bahagian 5.1.7:
If the value p being boxed is ... an int or short number between -128 and 127 (inclusive), then ... any two boxing conversions of p ... will always yield an identical reference.
Ini bermakna dalam julat nilai ini, semua objek pembalut Integer yang mewakili nilai int primitif yang sama akan menunjuk ke contoh yang sama dalam ingatan.
Selain itu 128
Walau bagaimanapun, tingkah laku perkongsian ini tidak berterusan melebihi nilai 128. Apabila nilai int di luar julat yang ditentukan [-128, 127] dimasukkan ke dalam objek Integer, pelaksanaannya bebas untuk dibuat contoh baharu untuk setiap nilai unik. Ini disahkan oleh JLS dalam bahagian yang sama:
This formulation disallows any assumptions about the identity of the boxed values on the programmer's part. This would allow (but not require) sharing of some or all of these references.
Ringkasnya, objek pembalut Integer berkongsi contoh yang sama hanya dalam julat nilai [-128, 127] kerana ia dinyatakan secara eksplisit oleh Bahasa Java Spesifikasi. Pengoptimuman ini memberikan faedah prestasi untuk senario biasa yang melibatkan nilai primitif dalam julat ini, tanpa menjejaskan fleksibiliti menggunakan tika berbeza untuk nilai unik di luar julat ini.
Atas ialah kandungan terperinci Mengapa Objek Pembungkus Integer Java Berkongsi Contoh Hanya Antara -128 dan 127?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!