Rumah > Java > javaTutorial > Mengapa Kolam Malar Integer Java Berkelakuan Berbeza Di Atas 127?

Mengapa Kolam Malar Integer Java Berkelakuan Berbeza Di Atas 127?

Mary-Kate Olsen
Lepaskan: 2024-11-10 13:45:03
asal
617 orang telah melayarinya

Why Does Java's Integer Constant Pool Behave Differently Above 127?

Soalan: Perbezaan dalam Kelakuan Kolam Pemalar Integer Java pada 127

Pengenalan:

The Kumpulan pemalar integer ialah mekanisme dalam Java yang mengoptimumkan caching nilai integer biasa untuk meningkatkan prestasi. Walau bagaimanapun, gelagat kumpulan ini menunjukkan perubahan pada 127, menimbulkan kekeliruan dalam kalangan pembangun.

Memahami Gelagat:

Untuk integer antara -128 hingga 127 , Java menjamin rujukan yang sama untuk pembolehubah yang merujuk pemalar yang sama.

Integer i1 = 127;
Integer i2 = 127;
System.out.println(i1 == i2); // True
Salin selepas log masuk

Ini kerana nilai-nilai ini dicache dalam kumpulan pemalar.

Capah pada 128:

Walau bagaimanapun, apabila nilai integer melebihi 127, tingkah laku berubah.

Integer i1 = 128;
Integer i2 = 128;
System.out.println(i1 == i2); // False
Salin selepas log masuk

Ini disebabkan oleh pengoptimuman pelaksanaan. Walaupun JLS menjamin caching untuk nilai sehingga 127, di luar julat itu, pelaksanaan mungkin memilih untuk menyimpan nilai secara berbeza atau bahkan tidak sama sekali.

Pertimbangan Tambahan:

Malah dalam julat yang dijamin (-128 hingga 127), tingkah laku caching tidak selalu boleh dipercayai. Contohnya, menggunakan Integer() baharu boleh memintas kumpulan pemalar dan mencipta rujukan baharu.

Integer i1 = new Integer(127);
Integer i2 = new Integer(127);
System.out.println(i1 == i2); // False
Salin selepas log masuk

Kesimpulan:

Kelakuan kumpulan pemalar Integer pada 127 berpunca daripada pengoptimuman pelaksanaan dan julat terjamin yang ditakrifkan oleh JLS. Pembangun harus sedar tentang perubahan tingkah laku ini untuk mengelakkan hasil yang tidak dijangka.

Atas ialah kandungan terperinci Mengapa Kolam Malar Integer Java Berkelakuan Berbeza Di Atas 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