"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 StringBuilder
objek 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
" StringBuilder
Kelas memiliki dua lusin metode yang bermanfaat. Inilah yang paling penting:
metode | Keterangan |
---|---|
|
Mengonversi objek yang diteruskan ke string dan menambahkannya ke string saat ini |
|
Mengonversi objek yang diteruskan ke string dan menyisipkan di tengah string saat ini |
|
Mengganti bagian string yang ditentukan oleh interval start..end dengan string yang diteruskan |
|
Menghapus karakter dengan indeks tertentu dari string |
|
Menghapus karakter dalam interval yang ditentukan dari string |
|
Mencari substring dalam string saat ini |
|
Mencari substring dalam string saat ini, mulai dari akhir |
|
Mengembalikan karakter dalam string pada indeks yang diteruskan |
|
Mengembalikan substring yang ditentukan oleh interval yang ditentukan |
|
Membalikkan string saat ini. |
|
Mengubah karakter pada indeks yang ditentukan menjadi karakter yang diteruskan |
|
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 |
---|---|
|
Hi |
Konversi ke string standar
"Untuk mengonversi StringBuilder
objek menjadi objek String, Anda hanya perlu memanggil metodenya toString()
. Contoh
Kode | Keluaran |
---|---|
|
Hi123 |
Bagaimana cara menghapus karakter?
"Untuk menghapus karakter dalam string yang bisa berubah, Anda perlu menggunakan deleteCharAt()
metode. Contoh:
Kode | Keluaran |
---|---|
|
Helo |
Bagaimana cara mengganti bagian string dengan string lain?
“Untuk ini ada caranya replace(int begin, int end, String str)
. Contoh:
Kode | Keluaran |
---|---|
|
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 |
---|---|
|
olleH |
"Selain StringBuilder
kelas, Java memiliki kelas seperti string lain yang disebut StringBuffer
. Ini adalah analog dari StringBuilder
kelas tersebut, tetapi metodenya ditandai dengan synchronized
pengubah."
"Maksudnya itu apa?"
"Artinya StringBuffer
objek 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'.
GO TO FULL VERSION