Rumah >Java >javaTutorial >Bagaimanakah Kata Kunci `akhir` Mempengaruhi Perbandingan Rentetan di Jawa?

Bagaimanakah Kata Kunci `akhir` Mempengaruhi Perbandingan Rentetan di Jawa?

Patricia Arquette
Patricia Arquetteasal
2024-11-29 03:55:14871semak imbas

How Does the `final` Keyword Affect String Comparisons in Java?

Perbandingan Rentetan dan Kemuktamadan dalam Java

Di Jawa, rentetan memainkan peranan penting dan tingkah lakunya boleh dipengaruhi oleh kata kunci akhir. Pertimbangkan coretan kod berikut:

String str1 = "str";
String str2 = "ing";
String concat = str1 + str2;

System.out.println(concat == "string");

Kod ini menggabungkan dua rentetan dan kemudian membandingkannya dengan rentetan rentetan literal menggunakan operator kesamaan ==. Hasilnya, seperti yang dijangkakan, adalah palsu.

Walau bagaimanapun, apabila pembolehubah rentetan diisytiharkan muktamad, hasilnya berubah:

final String str1 = "str";
final String str2 = "ing";
String concat = str1 + str2;

System.out.println(concat == "string");

Dalam kes ini, ungkapan perbandingan kini kembali benar. Perubahan dalam tingkah laku ini menimbulkan persoalan tentang bagaimana muktamad mempengaruhi perbandingan rentetan.

Saling Kemuncak dan Interning

Di Java, apabila rentetan dicipta dengan kompil- ungkapan pemalar masa (cth., rentetan literal) dan pembolehubah rentetan ditandakan sebagai muktamad, ia menjadi pembolehubah malar. Pembolehubah malar sedemikian diselaraskan oleh pengkompil, bermakna nilainya digantikan di tempat ia digunakan.

Dalam contoh kod kedua kami, operasi penggabungan berkesan menjadi:

String concat = "str" + "ing"; // Inlined from final variables

Hasil ini dalam:

String concat = "string";

Rentetan rentetan dimasukkan, bermakna ia disimpan dalam kumpulan kejadian rentetan yang unik. Contoh intern yang sama digunakan untuk mana-mana literal rentetan lain dengan kandungan yang sama.

Apabila kita membandingkan concat dengan "rentetan", kita sebenarnya sedang membandingkan dua rujukan kepada tika intern yang sama. Oleh itu, hasilnya adalah benar.

Kes Bukan Akhir

Dalam contoh kod pertama, memandangkan pembolehubah rentetan tidak muktamad, ia bukan masa kompilasi ungkapan yang berterusan. Operasi penggabungan berlaku pada masa jalan, yang mencipta objek String baharu. Objek ini tidak dimasukkan, jadi rujukannya berbeza daripada rujukan "rentetan", menghasilkan perbandingan palsu.

Kesimpulan

Di Jawa, mengisytiharkan rentetan pembolehubah sebagai muktamad dan memulakannya dengan ungkapan pemalar masa kompilasi boleh memberi kesan kepada perbandingan rentetan. Apabila rentetan dimasukkan, seperti halnya dengan pembolehubah akhir, perbandingan dibuat berdasarkan rujukan yang dikongsi kepada contoh unik yang dimasukkan, yang membawa kepada hasil yang berpotensi berbeza.

Atas ialah kandungan terperinci Bagaimanakah Kata Kunci `akhir` Mempengaruhi Perbandingan Rentetan di Jawa?. 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