String string konstan
Variabel StringBuffer String (Aman Thread)
StringBuilder String Variable (Non-Thread Safe)
Sederhananya, perbedaan kinerja utama antara tipe string dan tipe StringBuffer sebenarnya bahwa string adalah objek yang tidak dapat diubah. Oleh karena itu, setiap kali Anda mengubah jenis string, sebenarnya setara dengan menghasilkan objek string baru dan mengarahkan pointer ke objek string baru. Oleh karena itu, yang terbaik adalah tidak menggunakan string untuk string yang sering mengubah konten, karena setiap kali objek dihasilkan, itu akan berdampak pada kinerja sistem. Terutama ketika ada terlalu banyak objek yang dirujuk dalam memori, GC JVM akan mulai bekerja, yang pasti akan sangat lambat.
Jika Anda menggunakan kelas StringBuffer, hasilnya akan berbeda. Setiap kali hasilnya akan beroperasi pada objek StringBuffer itu sendiri, alih -alih menghasilkan objek baru dan kemudian mengubah referensi objek. Oleh karena itu, secara umum, kami sarankan menggunakan StringBuffer, terutama ketika objek string sering diubah. Dalam beberapa kasus khusus, splicing string dari objek string sebenarnya ditafsirkan oleh JVM sebagai penyambungan objek StringBuffer. Oleh karena itu, kecepatan objek string tidak lebih lambat dari objek StringBuffer pada saat ini. Terutama dalam pembuatan objek string berikut, efisiensi string jauh lebih cepat daripada StringBuffer:
String s1 = "Ini hanya tes" + "sederhana" + ";
StringBuffer SB = StringBuilder baru ("Ini hanya A"). Tambahkan ("Sederhana"). Append ("Test");
Anda akan terkejut menemukan bahwa kecepatan menghasilkan objek String S1 terlalu cepat, dan saat ini, StringBuffer tidak memiliki keuntungan dalam kecepatan. Bahkan, ini adalah trik JVM. Di mata JVM, ini
String s1 = "Ini hanya tes" + "sederhana" + "; Sebenarnya itu adalah:
String s1 = "Ini hanya tes sederhana"; Jadi tentu saja tidak butuh terlalu banyak waktu. Tetapi yang harus Anda perhatikan di sini adalah bahwa jika string Anda berasal dari yang lain
Untuk objek string, kecepatannya tidak secepat itu, misalnya:
String s2 = "Ini hanya A";
String s3 = "sederhana";
String s4 = "test";
String S1 = S2 + S3 + S4;
Pada saat ini, JVM akan melakukannya secara teratur
Dalam kebanyakan kasus StringBuffer> String
StringBuffer
Java.lang.StringBuffer Urutan karakter yang dapat diubah oleh Thread-Safe. Buffer string seperti string, tetapi tidak dapat dimodifikasi. Meskipun berisi urutan karakter tertentu kapan saja, panjang dan konten urutan dapat diubah dengan beberapa panggilan metode.
Buffer string dapat digunakan dengan aman untuk beberapa utas. Metode -metode ini dapat disinkronkan bila perlu, sehingga semua operasi pada contoh tertentu tampaknya terjadi dalam urutan serial yang konsisten dengan urutan panggilan metode yang dibuat oleh setiap utas yang terlibat.
Operasi utama pada StringBuffer adalah metode yang ditambahkan dan dimasukkan, yang dapat kelebihan beban untuk menerima semua jenis data. Setiap metode dapat secara efektif mengubah data yang diberikan menjadi string, dan kemudian menambahkan atau memasukkan karakter string itu ke dalam buffer string. Metode Append selalu menambahkan karakter ini ke akhir buffer; Metode insert menambahkan karakter pada titik yang ditentukan.
Misalnya, jika Z mengacu pada objek buffer string yang kontennya saat ini "mulai", metode ini memanggil z.append ("le") membuat buffer string berisi "mengejutkan", dan z.insert (4, "le") mengubah buffer string menjadi berisi "bintang muda".
Dalam kebanyakan kasus StringBuilder> StringBuffer
java.lang.stringbuilde
java.lang.stringbuilder urutan karakter variabel baru dalam 5.0. Kelas ini menyediakan API yang kompatibel dengan StringBuffer, tetapi tidak dijamin akan disinkronkan. Kelas ini dirancang untuk menjadi pengganti sederhana untuk StringBuffer, ketika buffer string digunakan oleh satu utas (ini umum). Jika memungkinkan, disarankan untuk mengambil kelas ini terlebih dahulu, karena lebih cepat daripada StringBuffer di sebagian besar implementasi. Metode keduanya pada dasarnya sama.
Di atas adalah kompilasi informasi pada string Java, StringBuffer dan StringBuilder. Kami akan terus menambahkan informasi yang relevan di masa mendatang. Terima kasih atas dukungan Anda untuk situs web ini!