Home > Java > Tentang String dan StringBuffer dalam Java

Tentang String dan StringBuffer dalam Java

Berbeda denga type data primitif yang lain, type data String dalam Java diperlakukan sebagai object. Object String dalam Java dapat dibuat dengan dua cara, yaitu:

Penulisan sesuatu di dalam tanda antara petik ganda (literal String). Cara ini digunakan untuk mengakomodasi kebiasaan dari bahasa C/C++

  • String s = ”Hello World”;
  • System.out.println(“Hello World”);

Pembuatan object String dengan keyword new.

  • String s = new String(“Halo”);

Untuk lebih detail tentang String Class dapat dilihat disini. Class String mempunyai atribut final, sehingga Class String tidak dapat di-extends / diturunkan.

Dalam Java, terdapt dua jenis memory yaitu:

  • Stack (tempat local variable dan tumpukan method)
  • Heap (tempat instance variable dan object), Di dalam heap terdapat bagian memory yang disebut dengan String constant pool

Bila kita membuat object String dengan penulisan sesuatu di antara tanda petik ganda (literal String), maka object String tersebut akan berada di dalam String constant pool. Sedangkan bila kita membuat String dengan keyword new, maka object String tersebut akan berada di dalam heap (tetapi diluar String constant pool)

Khusus untuk pembuatan object String dengan keyword new (ex: String sample = new String(“Hello World”) ), sebenarnya terdiri dari 3 buah proses (yang melibatkan 2 buah object String), yaitu :

  • Pembuatan object String “Hello World” di dalam String constant pool. Hal ini karena “Hello World” adalah literal String yang otomatis membuat object di String constant pool.
  • Pembuatan object String “Hello World” di dalam heap (non constant pool).
  • Penghapusan object String “Hello World” di dalam String constant pool (bila tidak ada yang mereferensi String) ini

Pada saat java menjumpai literal String (dalam kode program), maka java akan mencari String yang sama dengan literal String tersebut di dalam String constant pool. Bila ternyata di dalam pool ditemukan object String yang sama, maka reference akan menunjuk pada object String di dalam pool tersebut. Bila ternyata java tidak menemukan di dalam String constant pool, maka java akan membuat object String di dalam String constant pool terlebih dahulu.

Object String adalah immutable (tidak dapat diubah) . Pengertian tidak dapat diubah adalah, sekali sebuah object String berisi suatu nilai, maka nilai tersebut tidak dapat diubah (tidak peduli apakah object String tersebut berada pada heap ataupun String constant pool). Dalam praktek pemrograman, kita merasa bahwa object String dapat berubah, hal ini karena yang berubah adalah nilai reference penunjuk object String bukan object String tersebut.

String Class sangat tidak efektif bila kita ingin melakukan banyak modifikasi terhadap suatu String object, hal ini karena sifat dari String Class yang immutable (banyak modfikasi pada suatu kelas String akan dapat menyebabkan banyaknya object String yang terlibat). StringBuffer dan StringBuilder Class mengatasi permasalahan ini (mutable). StringBuffer thread safe sehingga dapat menjamin konsistensi operasi pada String object.

Pada String Class, method-method akan mengembalikan object String baru (hasil modifikasi) tanpa mengubah object String tempat method dipanggil (karena immutable)

Pada kelas StringBuffer Class method-method akan memodifikasi object tempat method dipanggil, dan kemudian mengembalikan object tersebut sebagai return value dari method.

Method utama pada StringBuffer adalah append dan insert method.Dan dengan Class StringBuffer kita dapat melakukan chaining method.

untuk lebih detail tentang StringBuffer dapat dilihat disini

Referensi : Dari berbagai sumber😀
Semoga bermanfaat

  1. No comments yet.
  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: