Rumah > Java > javaTutorial > Mengapa Objek Pembungkus Integer Java Berkongsi Contoh Hanya Antara -128 dan 127?

Mengapa Objek Pembungkus Integer Java Berkongsi Contoh Hanya Antara -128 dan 127?

Barbara Streisand
Lepaskan: 2024-11-27 11:32:10
asal
468 orang telah melayarinya

Why Do Java's Integer Wrapper Objects Share Instances Only Between -128 and 127?

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.
Salin selepas log masuk

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.
Salin selepas log masuk

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!

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