String Tidak Boleh Ubah: Memahami Konsep
Dalam Java, rentetan tidak boleh diubah, bermakna kandungannya tidak boleh diubah suai secara langsung. Walau bagaimanapun, konsep ini boleh mengelirukan apabila kita melihat kod seperti:
Output:
Apa Yang Sebenarnya Berlaku?
Walaupun memberikan nilai baru kepada a, output menunjukkan nilai asal. Percanggahan yang jelas ini timbul daripada kebolehubahan rentetan. Apabila rentetan baharu diberikan kepada pembolehubah rujukan, objek rentetan baharu dibuat dan rujukan dikemas kini untuk menunjuk ke objek baharu. Rentetan asal kekal tidak diubah suai.
Cara Rentetan Berfungsi
Untuk memahami perkara ini dengan lebih baik, mari kita terokai fungsi kelas Rentetan:
Pengurusan Memori dan Kolam Malar Rentetan
Tersurat rentetan adalah perkara biasa dalam aplikasi dan boleh menduduki ingatan yang ketara. Untuk mengoptimumkan penggunaan memori, Java Virtual Machine (JVM) mengekalkan "String constant pool" yang menyimpan semua literal rentetan. Apabila literal rentetan ditemui, pengkompil menyemak kumpulan untuk padanan sedia ada. Jika ditemui, rujukan dihalakan kepada rentetan sedia ada, mengelakkan penciptaan objek baharu.
Kepentingan Ketidakbolehubah
Ketidakbolehubahan rentetan memainkan peranan penting dalam ingatan pengurusan. Memandangkan rujukan kepada rentetan boleh menunjuk kepada objek asas yang sama, mengubah suai kandungan satu akan menjejaskan semua rujukan. Oleh itu, kebolehubahan memastikan bahawa rentetan asal dikekalkan, walaupun rujukannya diubah suai.
Kemuncak Kelas Rentetan
Untuk mengelakkan penggantian yang boleh memecahkan kebolehubah rentetan, Kelas rentetan ditandakan sebagai muktamad. Ini bermakna tiada kelas lain boleh mewarisi dan mengubah suai kelakuannya.
Ringkasnya
String tidak boleh diubah dalam Java. Apabila pembolehubah rujukan yang menunjuk ke objek rentetan ditetapkan semula, objek rentetan baharu dicipta, mengemas kini rujukan dengan berkesan dan bukannya mengubah suai objek sedia ada. Ketidakbolehubahan adalah penting untuk kecekapan ingatan dan memastikan ketekalan antara rujukan yang menunjuk kepada nilai rentetan yang sama.
Atas ialah kandungan terperinci Mengapa menetapkan semula pembolehubah String dalam Java tidak mengubah nilai rentetan asal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!