Belajar Pemrograman Java Dari Dasar

Perbedaan Dan Perbandingan Antara String, StringBuffer dan StringBuilder

Jika anda mempelajari bahasa pemrograman Java, pasti anda sering bertemu dengan pernyataan System.out.println() untuk menampilkan sesuatu pada konsol menggunakan String.

Sebagai salah satu class yang terpenting, String adalah final dan immutable pada Java. Setiap modifikasi yang dilakukan pada String akan membuat objek baru.

Misalkan ketika anda mengubah String huruf kapital menjadi huruf kecil, atau mengambil substring, atau bahkan ketika menghilangkan spasi, maka objek String yang baru akan dibuat.

Hasilnya adalah banyak objek sampah atau 'garbage' dari String yang tidak digunakan.


perbedaan String, StringBuffer, StringBuilder


Jadi bagaimana solusinya untuk memanipulasi string dalam Java tanpa harus menghasilkan String garbage?

Untungnya Java memiliki 2 class yang bisa digunakan untuk tujuan tersebut yaitu StringBuffer dan StringBuilder.

StringBuffer adalah class yang bisa dibilang sudah lama ada pada Java, namun StringBuilder ini relatif class baru yang hadir sejak JDK 5.

Masalah Dengan String Pada Java

Salah satu kekuatan String yaitu immutable, dapat juga menjadi masalah terbesar jika tidak digunakan dengan benar.

Banyak pengoperasian string yang menghasilkan garbage sementara (temporary) pada heap, seperti merangkaikan string, mengubah atau konversi menjadi huruf kecil atau huruf besar, mengambil substring dari suatu string dan lain sebagainya.

Jika string dibuat dengan menggunakan literal, maka string-string tersebut akan tinggal di dalam string pool.

Perbedaan Antara String dan StringBuffer

Perbedaan utama antara String dan StringBuffer adalah dari segi immutability. Dimana String adalah immutable dan StringBuffer tidak immutable.

Dikarenakan StringBuffer ini tidak immutable maka anda bisa memodifikasi objek StringBuffer tersebut tanpa membuat objek baru yang tidak diperlukan.

Oleh karena itu StringBuffer bisa menjadi pilihan yang tepat ketika memerlukan banyak modifikasi pada String.

Sementara itu untuk mengkonversi dari StringBuffer menjadi String dapat menggunakan method toString().

Perbedaan Antara StringBuffer dan StringBuilder

StringBuffer sangat baik ketika bekerja dengan mutable String. Namun, kekurangannya adalah semua public method yang dimilikinya disinkronisasi sehingga membuat StringBuffer ini menjadi thread safe tapi juga bisa menjadi sangat lambat.

Untuk mengatasi hal ini, pada JDK 5 dihadirkanlah class StringBuilder. Class ini serupa dengan StringBuffer namun tidak disinkronisasi. Ketika memungkinkan, menggunakan StringBuilder akan memperoleh performa yang lebih baik jika dibandingkan dengan menggunakan StringBuilder.

StringBuffer dan StringBuilder adalah class yang benar-benar serupa, sehingga method yang dimiliki StringBuffer pada Java API dapat juga digunakan pada StringBuilder.

Operator concat '+' digunakan untuk merangkaikan dua string dan secara internal juga diimplementasikan untuk StringBuffer dan StringBuilder.

Di sisi lainnya, terdapat perbedaan signifikan antara StringBuffer dan StringBuilder seperti berikut ini.

StringBuffer StringBuilder
Thread safe Tidak Thread safe
Disinkronisasi Tidak disinkronisasi
Lebih lambat jika dibandingkan dengan StringBuilder Lebih cepat jika dibandingkan dengan StringBuffer

Kesimpulan

Dari beberapa poin-poin diatas dapat disimpulkan sebagai berikut:

  • Objek String adalah immutable sedangankan StringBuffer dan StringBuilder tidak immutable pada Java.

  • StringBuilder memiliki performa yang lebih cepat daripada StringBuffer karena tidak disinkronisasi

  • Operator concat '+' diterapkan secara internal baik oleh StringBuffer ataupun StringBuilder

  • String digunakan jika memerlukan immutability, StringBuffer digunakan ketika memerlukan mutability dan thread safe, dan gunakan StringBuilder ketika membutuhkan mutability tanpa thread safe.

Share on Facebook
Share on Twitter
Share on Google+

Artikel Menarik Lainnya :