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
Mary-Kate Olsenasal
2024-11-10 13:45:03616semak imbas

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

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

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

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!

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