Rumah >Java >javaTutorial >Mengapa menetapkan semula pembolehubah String dalam Java tidak mengubah nilai rentetan asal?

Mengapa menetapkan semula pembolehubah String dalam Java tidak mengubah nilai rentetan asal?

Patricia Arquette
Patricia Arquetteasal
2024-12-19 11:55:14488semak imbas

Why does reassigning a String variable in Java not change the original string's value?

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:

  • Mencipta rentetan: String str = "pengetahuan" mencipta objek rentetan dengan nilai "pengetahuan" dan memberikan str rujukan kepadanya.
  • Menetapkan rujukan: String s = str mencipta rujukan baharu s yang menghala ke objek rentetan yang sama.
  • Percubaan pengubahsuaian: str = str.concat(" base ") secara konseptual menambahkan " base" pada str, tetapi oleh kerana rentetan tidak boleh diubah, objek rentetan baharu dengan nilai "pengetahuan base" dicipta dan str rujukan dikemas kini untuk menghalakannya.

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!

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