Objek pembalut Java menyediakan jambatan penting antara jenis data primitif dan objek. Walau bagaimanapun, tingkah laku pelik telah diperhatikan dalam tinju nilai integer: kejadian kelihatan hanya dikongsi dalam julat -128 hingga 127.
Pertimbangkan kod berikut:
Integer integer1 = 127; Integer integer2 = 127; System.out.println(integer1 == integer2); // outputs "true"
Dalam kes ini, integer1 dan integer2 diberikan contoh yang sama, seperti yang dibuktikan oleh output "true" apabila membandingkannya dengan ==. Walau bagaimanapun, tingkah laku yang berbeza dipamerkan apabila nilai melebihi julat ini:
Integer integer1 = 128; Integer integer2 = 128; System.out.println(integer1 == integer2); // outputs "false"
Mengapa fenomena ini berlaku?
Menurut Spesifikasi Bahasa Java (JLS), ia dinyatakan secara khusus bahawa "nilai biasa tertentu sentiasa dimasukkan ke dalam objek yang tidak dapat dibezakan." Julat ini ditakrifkan sebagai "bait, atau aksara dalam julat u0000 hingga u007f, atau int atau nombor pendek antara -128 dan 127 (termasuk)".
Kewajaran untuk kelakuan ini, seperti yang dijelaskan dalam JLS, adalah untuk "memastikan bahawa dalam kebanyakan kes biasa, tingkah laku akan menjadi yang diingini, tanpa mengenakan penalti prestasi yang tidak wajar, terutamanya pada peranti kecil." Dengan mengehadkan gelagat contoh yang dikongsi kepada julat nilai biasa, Java mencapai keseimbangan antara prestasi dan gelagat yang dijangkakan.
Atas ialah kandungan terperinci Mengapa Objek Pembalut Integer Java Dikongsi Hanya Antara -128 dan 127?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!