Rumah > Java > javaTutorial > Mengapakah Kesamaan `Integer` Kadangkala Mengembalikan `palsu` di Jawa?

Mengapakah Kesamaan `Integer` Kadangkala Mengembalikan `palsu` di Jawa?

Mary-Kate Olsen
Lepaskan: 2024-11-30 03:08:13
asal
351 orang telah melayarinya

Why Does `Integer` Equality Sometimes Return `false` in Java?

Caching Integer dalam Java: Memahami Pengoptimuman

Pemerhatian terkini telah menimbulkan kekeliruan mengenai kelakuan objek Integer di Java. Contoh kod menunjukkan bahawa pengendali kesamaan mengembalikan "salah" untuk dua kejadian Integer bersamaan dengan 1000 tetapi "benar" untuk dua kejadian bersamaan dengan 100.

Paradoks yang kelihatan ini berpunca daripada mekanisme caching Java untuk integer. Untuk mengoptimumkan prestasi dan mengurangkan jejak memori, Java Virtual Machine (JVM) menyimpan objek Integer untuk nilai antara -128 dan 127. Ini bermakna rujukan kepada kejadian Integer dalam julat ini sentiasa sama.

Oleh itu, dalam coretan kod kedua, di mana kejadian Integer mewakili nilai 100, kedua-dua "c" dan "d" menunjuk ke objek cache yang sama, menghasilkan dalam "benar" apabila membandingkan kesamarataan mereka. Walau bagaimanapun, untuk nilai di luar julat ini, seperti 1000, objek Integer berbeza dicipta, maka hasil perbandingan "palsu".

Pengoptimuman ini menjejaskan prestasi dengan mengurangkan penggunaan memori, yang membawa kepada penggunaan cache yang lebih cekap. Ia juga menghapuskan overhed mencipta objek baharu untuk integer yang kerap digunakan, menjadikan pelaksanaan kod lebih cepat.

Kajian lanjut mengenai topik ini boleh didapati dalam sumber berikut:

  • [Oracle's Java Penalaan Prestasi Garis Panduan](https://docs.oracle.com/javase/7/docs/technotes/guides/vm/performance-tuning-6.html#integer_caching)
  • [Pengoptimuman Aritmetik Integer dalam Java dan C ](https://coincidental.com/research/number-boxes.pdf)

Atas ialah kandungan terperinci Mengapakah Kesamaan `Integer` Kadangkala Mengembalikan `palsu` di Jawa?. 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