Alternatif lain dari kelas String adalah menggunakan kelas StringBuffer. Kelas StringBuffer juga terletak di paket java.lang sehingga tidak perlu diimpor saat digunakan. Kelas StringBuffer lebih fleksibel dibandingkan kelas String. Anda dapat memodifikasi string yang tersimpan di objek kelas StringBuffer menggunakan beberapa metoda yang dimilikinya.

Sebagaimana obyek dari kelas String, obyek kelas StringBuffer bersifat kekal (immutable) artinya nilai string yang tersimpan di obyek kelas StringBuffer tidak dapat dirubah. Namun demikian, kemampuan kelas StringBuffer untuk menampung jumlah karakter ditentukan oleh kapasitasnya (capacity). Apabila jumlah karakter yang tersimpan di obyek StringBuffer telah melampaui kapasitasnya, secara otomatis kapasitasnya akan bertambah untuk menampung sejumlah karater baru.

Konstruktor kelas StringBuffer.

Kelas StringBuffer mempunyai tiga buah konstruktor. Anda dapat mengkonstruksi obyek kelas StringBuffer menggunakan salah satu diantara tiga konstruktor tersebut. Berikut ini adalah tabel dari konstruktor kelas StringBuffer:

Konstruktor Keterangan
StringBuffer() Mengkonstrusi buffer string kosong (tanpa karakter).
StringBuffer(int length) Mengkontruksi buffer string kosong (tanpa karakter) dengan kapasitas ditentukan oleh parameter length.
StringBuffer(String str) Mengkonstruksi buffer string dengan parameter string.

Metoda kelas StringBuffer.

Berikut ini adalah tabel beberapa metoda kelas StringBuffer yang sering digunakan untuk memodifikasi isi dari obyek kelas StringBuffer:

Konstruktor Keterangan
append(char[] data) Menambah larik karakter ke dalam buffer string.
append(String str) Menambah string ke dalam buffer string.
delete(int startIndex, int endindex) Menghapus karakter dimulai dari startIndex sampai endIndex.
deleteChartAt(int index) Menghapus sebuah karakter di indek yang telah ditetapkan.
insert(int offset, char[] data) Menyisipkan larik karakter ke dalam buffer di posisi offset.
insert(int offset, String str) Menyisipkan string str ke dalam buffer di posisi offset.
replace(int startIndex, int endIndex, String str) Mengganti karakter di dalam buffer dimulai dari startIndex sampai endIndex dengan string yang telah ditetapkan.
setCharAt(int index, char chr) Mengganti karakter lama yang posisinya ditentukan oleh index dengan karakter chr.
charAt(int index) Mengembalikan karakter indek yang telah ditentukan.
capacity() Mengembalikan kapasitas dari buffer string.
reverse() Membalik karakter di dalam buffer.

Berikut ini adalah contoh program yang mendemonstrasikan pembuatan (pengkonstruksian) obyek kelas StringBuffer menggunakan tiga buah konstruktor yang terdapat pada tabel konstruktor.

// Nama file : KonstruktorStringBuffer.java
// Menggunakan konstruktor dari kelas StringBuffer

// Deklarasi Kelas
public class KonstruktorStringBuffer {

   // Metoda main
   public static void main(String[] args) {

      StringBuffer strBuff1 = new StringBuffer();
      StringBuffer strBuff2 = new StringBuffer(60);
      StringBuffer strBuff3 = new StringBuffer("Selamat malam");

      System.out.println();
      System.out.println("strBuff1 = " + strBuff1);
      System.out.println("strBuff2 = " + strBuff2);
      System.out.println("strBuff3 = " + strBuff3);
   }
}

Di baris nomor 10, variabel acuan strBuff1 mengacu ke obyek kelas StringBuffer yang dibuat menggunakan konstruktor tanpa argumen. Baris nomor 11, variabel acuan strBuff2 mengacu ke obyek kelas StringBuffer yang dibuat menggunakan kontruktor dengan parameter length yang diberi argumen int 60. Baris nomor 12, variabel acuan strBuff3 mengacu ke obyek kelas StringBuffer yang dibuat menggunakan kontruktor dengan parameter string dan diberi argumen berupa nilai string “Selamat malam”.

Penggunaan variabel acuan strBuff1, strBuff2 dan strBuff3 di pernyataan baris nomor 15 - 17 secara internal adalah sama dengan panggilan ke metoda toString oleh masing-masing variabel acuan tersebut. Sebagai contoh, pernyataan baris nomor 15 - 16 di kode program tersebut dapat ditulis ulang sebagai berikut:

System.out.println("strBuff1 = " + strBuff1.toString());
System.out.println("strBuff2 = " + strBuff2.toString());