"Salam, Amigo!"

"Halo, Rishi!"

"Kamu sekarang cukup tahu tentang string untuk mempelajari sesuatu yang menarik. Lebih khusus lagi, kelas baru yang mirip, tetapi tidak persis sama dengan, kelas String."

"Kedengarannya menarik, meskipun tidak sepenuhnya jelas bagi saya bagaimana string biasa gagal dan mengapa diperlukan kelas seperti string lainnya."

"Mari kita mulai dengan fakta bahwa string adalah objek yang tidak dapat diubah di Jawa."

"Bagaimana? Aku lupa... Atau aku tidak pernah tahu sejak awal..."

"Izinkan saya mengingatkan Anda bahwa objek yang tidak dapat diubah adalah objek yang statusnya tidak dapat diubah setelah dibuat."

"Ahhh... Mengapa string tidak dapat diubah di Jawa?"

"Ini dilakukan untuk membuat kelas String sangat dioptimalkan dan memungkinkannya digunakan di mana saja. Misalnya, hanya jenis yang tidak dapat diubah yang direkomendasikan untuk digunakan sebagai kunci dalam koleksi HashMap .

"Namun, situasi sering muncul ketika pemrogram merasa lebih nyaman jika kelas String bisa berubah. Mereka menginginkan kelas yang tidak membuat substring baru setiap kali salah satu metodenya dipanggil."

"Tapi apa gunanya?"

"Yah, misalkan kita memiliki string yang sangat besar dan kita perlu sering menambahkan sesuatu di akhir string. Dalam hal ini, bahkan kumpulan karakter ( ) ArrayList<Character>bisa lebih efisien daripada terus-menerus membuat ulang dan menggabungkan objek String."

"Dan itu sebabnya kita membutuhkan string yang bukan kelas String?"

"Tepat sekali. Bahasa Java telah menambahkan tipe seperti String yang dapat diubah. Ini disebut StringBuilder".

Membuat objek

"Untuk membuat StringBuilderobjek berdasarkan string yang ada, Anda perlu menjalankan pernyataan seperti:

StringBuilder name = new StringBuilder(string);

"Untuk membuat string kosong yang bisa berubah, Anda perlu menggunakan pernyataan seperti ini:

StringBuilder name = new StringBuilder();

Daftar metode

" StringBuilderKelas memiliki dua lusin metode yang bermanfaat. Inilah yang paling penting:

metode Keterangan
StringBuilder append(obj)
Mengonversi objek yang diteruskan ke string dan menambahkannya ke string saat ini
StringBuilder insert(int index, obj)
Mengonversi objek yang diteruskan ke string dan menyisipkan di tengah string saat ini
StringBuilder replace(int start, int end, String str)
Mengganti bagian string yang ditentukan oleh interval start..end dengan string yang diteruskan
StringBuilder deleteCharAt(int index)
Menghapus karakter dengan indeks tertentu dari string
StringBuilder delete(int start, int end)
Menghapus karakter dalam interval yang ditentukan dari string
int indexOf(String str, int index)
Mencari substring dalam string saat ini
int lastIndexOf(String str, int index)
Mencari substring dalam string saat ini, mulai dari akhir
char charAt(int index)
Mengembalikan karakter dalam string pada indeks yang diteruskan
String substring(int start, int end)
Mengembalikan substring yang ditentukan oleh interval yang ditentukan
StringBuilder reverse()
Membalikkan string saat ini.
void setCharAt(int index, char)
Mengubah karakter pada indeks yang ditentukan menjadi karakter yang diteruskan
int length()
Mengembalikan panjang string dalam karakter

"Dan sekarang saya akan menjelaskan secara singkat masing-masing metode ini kepada Anda.

Menambahkan ke string

"Untuk menambahkan sesuatu ke string yang bisa berubah ( StringBuilder), gunakan append()metode ini. Contoh:

Kode Keterangan
StringBuilder builder = new StringBuilder("Hi");
builder.append("Bye");
builder.append(123);
Hi
HiBye
HiBye123

Konversi ke string standar

"Untuk mengonversi StringBuilderobjek menjadi objek String, Anda hanya perlu memanggil metodenya toString(). Contoh

Kode Keluaran
StringBuilder builder = new StringBuilder("Hi");
builder.append(123);
String result = builder.toString();
System.out.println(result);
Hi123

Bagaimana cara menghapus karakter?

"Untuk menghapus karakter dalam string yang bisa berubah, Anda perlu menggunakan deleteCharAt()metode. Contoh:

Kode Keluaran
StringBuilder builder = new StringBuilder("Hello");
builder.deleteCharAt(2);
String result = builder.toString();
System.out.println(result);
Helo

Bagaimana cara mengganti bagian string dengan string lain?

“Untuk ini ada caranya replace(int begin, int end, String str). Contoh:

Kode Keluaran
StringBuilder builder = new StringBuilder("Mellow");
builder.replace(2, 5, "Hello!");
String result = builder.toString();
System.out.println(result);
MeHello!w

"Kedengarannya nyaman. Terima kasih, Rishi."

"Jangan sebutkan itu. Bagaimana dengan ini, bisakah kamu membalik seutas tali? Bagaimana kamu melakukannya?"

"Baiklah... saya akan membuat StringBuilder, memasukkan string ke dalamnya... Kemudian membuat string baru, dan dalam satu lingkaran dari karakter terakhir ke yang pertama... Atau mungkin pergeseran bitwise...

"Tidak buruk. Tapi bisa lebih cepat. Ada metode khusus untuk melakukan ini — reverse();Contoh:

Kode Keluaran
String str = "Hello";
StringBuilder builder = new StringBuilder(str);
builder.reverse();
String result = builder.toString();
System.out.println(result);
olleH

"Selain StringBuilderkelas, Java memiliki kelas seperti string lain yang disebut StringBuffer. Ini adalah analog dari StringBuilderkelas tersebut, tetapi metodenya ditandai dengan synchronizedpengubah."

"Maksudnya itu apa?"

"Artinya StringBufferobjek tersebut dapat diakses secara bersamaan dari banyak utas."

"Saya belum terlalu paham dengan utas. Tapi 'dapat diakses dari banyak utas' jelas lebih baik daripada 'tidak dapat diakses dari banyak utas'... Mengapa tidak selalu menggunakannya? StringBuffer"

"Karena jauh lebih lambat daripada StringBuilder. Anda mungkin memerlukan kelas seperti itu ketika Anda mulai aktif menjelajahi multithreading dalam pencarian Java Multithreading .

"Saya akan menulis itu ke ingatan saya agar tidak lupa. Ditandai 'untuk masa depan'.