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

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

Patricia Arquette
Lepaskan: 2024-11-29 03:55:14
asal
888 orang telah melayarinya

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");
Salin selepas log masuk

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");
Salin selepas log masuk

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
Salin selepas log masuk

Hasil ini dalam:

String concat = "string";
Salin selepas log masuk

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 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