Rumah  >  Artikel  >  Java  >  Mengapa Nilai Integer Di Luar Julat -128 hingga 127 Berkelakuan Berbeza dalam Kolam Malar Java?

Mengapa Nilai Integer Di Luar Julat -128 hingga 127 Berkelakuan Berbeza dalam Kolam Malar Java?

Barbara Streisand
Barbara Streisandasal
2024-11-07 04:16:03384semak imbas

Why Do Integer Values Outside the Range -128 to 127 Behave Differently in Java's Constant Pool?

Mengapa Gelagat Kolam Malar Integer Berbeza Selepas 127

Kolam malar untuk nombor dalam Java berbeza daripada rentetan. Walaupun hanya pemalar masa kompilasi yang dimasukkan untuk rentetan, sebarang operasi tinju melibatkan kumpulan untuk jenis pembungkus integer.

Sebagai contoh:

int x = 10;
int y = x + 1;
Integer z = y; // Not a compile-time constant
Integer constant = 11;
System.out.println(z == constant); // true

JLS menjamin julat kecil nilai terkumpul , dengan pelaksanaan mempunyai pilihan untuk menggunakan julat yang lebih besar.

Secara praktiknya, kebanyakan pelaksanaan menggunakan Integer.valueOf untuk operasi tinju, yang membawa kepada tingkah laku berikut:

Integer x = Integer.valueOf(100);
Integer y = Integer.valueOf(100);
System.out.println(x == y); // true

Menurut bahagian JLS 5.1.7:

Nilai antara -128 dan 127 akan sentiasa menghasilkan rujukan yang sama apabila dikotak. Ini ialah kompromi praktikal yang memastikan nilai biasa sentiasa tidak dapat dibezakan.

Walau bagaimanapun, tingkah laku berubah untuk nilai di luar julat ini. Atas sebab kecekapan, pelaksanaan mungkin tidak menganggap rujukan dikongsi untuk nilai ini.

Ini memastikan tingkah laku yang diingini dalam kebanyakan situasi tanpa menjejaskan prestasi dengan ketara. Pelaksanaan terhad memori boleh melanjutkan caching untuk merangkumi julat nilai yang lebih luas.

Atas ialah kandungan terperinci Mengapa Nilai Integer Di Luar Julat -128 hingga 127 Berkelakuan Berbeza dalam Kolam Malar Java?. 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