Nilai string tidak dapat diubah.
Kelas StringBuffer sama dengan kelas String, dan juga digunakan untuk mewakili string. penggunaan memori.
StringBuffer mengalokasikan buffer 16-byte-length secara default.
StringBuffer tidak seperti string.
StringBuffer Str1 = StringBuffer baru (); // Alokasikan buffer dengan panjang 16 byte stringBuffer str2 = = stringBuffer baru (512); dari 16 byte panjangnya dicadangkan di belakang StringBuffer str3 = New StringBuffer (www.weixueyuan.net);
Metode utama kelas StringBuffer
Metode dalam kelas StringBuffer terutama berfokus pada pengoperasian string, seperti menambahkan, memasukkan dan menghapus, yang juga merupakan perbedaan utama antara kelas StringBuffer dan kelas String. Dalam pengembangan yang sebenarnya, jika Anda perlu sering melakukan modifikasi pada string, disarankan untuk menggunakan StringBuffer.
1) Metode append ()
Metode append () digunakan untuk menambahkan konten ke akhir string saat ini, mirip dengan gabungan string. Setelah memanggil metode ini, konten objek StringBuffer juga berubah, misalnya:
StringBuffer str = New StringBuffer ("Biancheng100"); str.Append (true);
Maka nilai objek STR akan menjadi "Biancheng100true". Perhatikan bahwa konten yang ditunjukkan oleh STR telah berubah, bukan titik STR telah berubah.
Operasi "+" dari string sebenarnya adalah untuk membuat objek StringBuffer terlebih dahulu, lalu panggil metode append () untuk menyambungkan fragmen string, dan akhirnya memanggil metode tostring () untuk mengubahnya menjadi string.
Dengan cara ini, operasi koneksi string memiliki operasi tambahan lebih dari StringBuffer, dan efisiensi pasti akan dikurangi.
Namun, untuk string yang lebih kecil, operasi "+" lebih intuitif dan mudah dibaca, dan kadang -kadang Anda dapat sedikit mengorbankan efisiensi.
2) deleteCharat ()
Metode deleteCharat () digunakan untuk menghapus karakter pada posisi yang ditentukan dan untuk membentuk string baru karakter yang tersisa. Misalnya:
StringBuffer str = New StringBuffer ("ABCDEF"); str.
Kode ini akan menghapus karakter dengan nilai indeks 3, yaitu karakter "D".
Anda juga dapat menghapus beberapa karakter sekaligus melalui metode delete (), misalnya:
StringBuffer str = New StringBuffer ("ABCDEF"); str.Delete (1, 4);
Kode ini akan menghapus karakter dengan nilai indeks antara 1 dan 4, termasuk nilai indeks 1, tetapi tidak 4.
3) Metode Sisipkan ()
Insert () digunakan untuk memasukkan string di lokasi yang ditentukan dan dapat dianggap sebagai versi append () yang ditingkatkan. Misalnya:
StringBuffer str = New StringBuffer ("ABCDEF"); str.insert (3, "xyz");
String yang ditunjuk oleh STR adalah ABCDXYZEF.
4) Metode setChargo ()
Metode setChargo () digunakan untuk memodifikasi karakter pada posisi yang ditentukan. Misalnya:
StringBuffer str = new StringBuffer ("abcdef"); str.setcharat (3, 'z');
Kode ini akan memodifikasi karakter dengan nilai indeks 3 ke z, dan string yang ditunjuk oleh STR adalah ABCZEF.
Di atas hanyalah penjelasan sederhana dari beberapa metode yang umum digunakan.
Perbandingan efisiensi antara string dan stringBuffer
Untuk lebih jelas melihat efisiensi eksekusi mereka, kode berikut menambahkan 26 huruf bahasa Inggris 10.000 kali.
Demo Public {public static void Main (String [] args) {String fragment = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; (int i = 0; i <kali; i ++) {str1 += fragmen; // oleh StringBuffer Long TimestArt2 = System.CurrentTimeMillis (); (); Hasil Menjalankan:
String: 5287MSstringBuffer: 3ms
Kesimpulannya jelas, efisiensi eksekusi StringBuffer adalah ribuan kali lebih cepat dari string.
String: 35923MSstringBuffer: 8ms
Oleh karena itu, sangat disarankan untuk menggunakan StringBuffer ketika melibatkan banyak operasi string.
Kelas StringBuilder
Fungsi kelas StringBuilder dan kelas StringBuffer pada dasarnya serupa, dan metodenya serupa. Jadilah sedikit lebih cepat.
Antarmuka charsequence diimplementasikan dalam StringBuffer, StringBuilder, dan String.
Charsequence adalah antarmuka yang mendefinisikan operasi string.
Proses implementasi antarmuka charsequence dari StringBuffer, StringBuilder, dan String berbeda, seperti yang ditunjukkan pada gambar di bawah ini:
Dapat dilihat bahwa String secara langsung mengimplementasikan antarmuka charsequence;
Meringkaskan
Keselamatan Thread:
StringBuffer: Thread-Safe
StringBuilder: Thread tidak aman
kecepatan:
Secara umum, kecepatan dari cepat ke lambat adalah string stringBuilder> StringBuffer>, tentu saja ini relatif, tidak absolut.
Lingkungan Penggunaan:
Gunakan string untuk mengoperasikan sejumlah kecil data;
Gunakan StringBuilder untuk mengoperasikan sejumlah besar data dalam satu utas;
Operasi multithreading dari sejumlah besar data menggunakan StringBuffer.