Mengapa String Immutable Pada Java?

String objek pada Java bersifat immutable, artinya ketika String itu dibuat, maka kontennya tidak bisa diganti.

Pada pembahasan kali ini kita akan melihat lebih dalam lagi mengenai String.

Beberapa Alasan String Immutable


Ini adalah pertanyaan klasik namun cukup populer yang sering ditanyakan oleh para pengguna bahasa pemrograman Java. Terdapat beberapa alasan yang membutuhkan pemahaman lebih dalam untuk hal ini, yaitu meliputi memori, sinkronisasi, struktur data, dan sebagainya.

Beberapa alasan mengenai mengapa String immutable atau final dalam Java adalah:
  • Java Runtime dapat menghemat banyak ruang memori heap karena variabel string yang berbeda dapat merujuk kepada variabel string yang sama di dalam String pool. Pengertian dari string pool (kolam string ) adalah tempat string disimpan dalam memori Java heap.

    String adalah class istimewa dalam Java dan objek String dapat dibuat dengan menggunakan operator new ataupun menggunakan tanda petik ganda.

    Berikut ini adalah diagram yang menggambarkan dengan jelas bagaimana String pool berada dalam Java heap dan apa yang terjadi jika anda membuat String dengan cara yang berbeda.

    java_string_pool
    String pool di dalam Java heap


    String pool ini hanya dapat terjadi karena String tersebut immutable. String pool dapat menghemat ruang untuk Java Runtime walaupun waktu yang dibutuhkan untuk membuat String menjadi lebih lama.

    Ketika anda menggunakan tanda kutip ganda untuk membuat String, maka pertama-tama akan dicari String dengan nilai yang sama di dalam String pool, jika ditemukan, maka referensi akan dikembalikan, namun jika nilai yang sama tidak ditemukan, maka String yang baru akan dibuat dan referensi akan dikembalikan.




    Namun ketika anda membuat String dengan operator new maka anda akan memaksa class String untuk membuat objek String yang baru di dalam ruang heap. Anda dapat menggunakan method intern() untuk memasukannya kembali ke dalam String pool atau mengacu kepada objek String dari pool yang memiliki nilai yang sama.

    Agar lebih jelas berikut ini adalah contoh program yang menggambarkan mengenai String pool:



Output:


  • Jika String tidak immutable maka akan menjadi ancaman yang parah untuk aplikasi. Sebagai contoh pada username database, password dilewatkan sebagai String untuk mendapatkan koneksi pada database. Karena String immutable maka nilainya tidak bisa diubah kecuali ada peretas yang yang mampu mengubah nilai referensi untuk menyebabkan masalah keamanan pada aplikasi.


  • Karena String immutable maka aman untuk melakukan multithreading dan String tunggal dapat di share pada berbagai thread-thread yang berbeda. Hal ini menghindari penggunaan synchronization untuk keamanan thread. Secara implisit String merupakan thread safe.


  • String digunakan dalam ClassLoader pada Java dan immutable-nya memberikan kemananan bahwa class yang tepat akan di-load oleh class loader ini.


  • Karena String immutable maka kode hashnya di-cache pada saat pembuatan dan tidak perlu dihitung lagi. Ini menjadikannya pilihan yang hebat untuk key di dalam Map dan pemrosesannya berlangsung lebih cepat dibandingkan dengan key objek HashMap lainnya. Inilah yang menyebabkan String sering digunakan sebagai key HashMap.


Demikianlah beberapa poin yang bisa dirangkum mengenai mengapa String immutable pada Java. Ini menjadikan String menjadi class yang istimewa pada Java karena memiliki beberapa fitur-fitur yang hebat yang sangat bermanfaat.

Mengapa String Immutable Pada Java? Mengapa String Immutable Pada Java? Reviewed by Bahasa Java on 06.42.00 Rating: 5

Tidak ada komentar:

Diberdayakan oleh Blogger.