Rumah >Java >javaTutorial >Mengapa Caching Integer Java Mempengaruhi Perbandingan `==`?

Mengapa Caching Integer Java Mempengaruhi Perbandingan `==`?

Susan Sarandon
Susan Sarandonasal
2024-12-18 14:30:12928semak imbas

Why Does Java's Integer Caching Affect `==` Comparisons?

Mengapa Integer Kecil Dicache dalam Java?

Masalah:

Pertimbangkan kod Java berikut:

Integer a = 1000, b = 1000;  
System.out.println(a == b); // false  
Integer c = 100, d = 100;  
System.out.println(c == d); // true

Mengapa perbandingan a dan b mengembalikan palsu manakala c dan d kembali benar, walaupun kedua-duanya pasangan yang mempunyai nilai berangka yang sama?

Jawapan:

Untuk mengoptimumkan memori dan prestasi, Java Virtual Machine (JVM) cache integer integer dalam julat tertentu.

JVM mengiktiraf bahawa nilai integer kecil (biasanya dari -128 hingga 127) kerap digunakan dalam program. Memperuntukkan objek Integer baharu untuk setiap nilai tersebut akan menggunakan memori yang berlebihan. Oleh itu, JVM mengekalkan cache kejadian Integer yang telah diperuntukkan dalam julat ini. Apabila autoboxing berlaku, atau apabila nilai integer literal diberikan kepada pembolehubah Integer (cth., Integer c = 100;), JVM mendapatkan semula tika yang sepadan daripada cache.

Pengoptimuman ini mengurangkan overhed memori dengan ketara dan meningkatkan kecekapan cache . Dengan menyimpan berbilang rujukan kepada objek Integer yang sama, JVM boleh mengelakkan penciptaan objek berlebihan dan mengoptimumkan penggunaan memori.

Atas ialah kandungan terperinci Mengapa Caching Integer Java Mempengaruhi Perbandingan `==`?. 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