Mari kita analisis gabungan string di bawah ini.
1. string
Buka kode sumber string, seperti yang ditunjukkan pada gambar
Anda akan menemukan bahwa nilai karakter yang menyimpan string adalah konstanta akhir. Melihat metode konstruksi string, kami menemukan bahwa nilai string ditentukan oleh metode konstruksi. Perlu menjelaskan final kata kunci di sini
Atribut yang dimodifikasi oleh final adalah konstan (nilai tidak dapat diubah). Itu ditugaskan nilai saat menyatakannya atau diberi nilai dalam metode konstruksi. Setelah ditugaskan, itu tidak dapat diubah.
Oleh karena itu, menggunakan string untuk menerapkan jahitan string. Karena nilai string tidak dapat diubah, string baru harus dihasilkan untuk setiap jahitan untuk menyimpan string baru. Oleh karena itu, menggunakan string untuk menangani jahitan string akan memiliki kinerja yang sangat rendah.
Untuk informasi lebih lanjut tentang string, silakan merujuk ke blog: http://longpo.iteeye.com/blog/2199493
2.StringBuffer
Kelas StringBuffer mewarisi kelas Abstrak AbstractStringBuilder dan membuka kode sumber AbstractStringBuilder.
Mari kita lihat tiga metode kelebihan beban
Ditemukan bahwa semua konstruktor kelas induk AbstractStringBuilder disebut.
Ditemukan bahwa array char di mana StringBuffer menyimpan data tidak dari tipe akhir, yang berarti bahwa itu dapat diubah, dan string yang dibangun masih memiliki ruang bebas untuk menyambungkan string.
Di StringBuffer, kami menggunakan fungsi append () untuk menyambungkan string. Kita dapat berpikir bahwa meskipun masih ada yang tersisa di array char, jelas tidak cukup untuk menyambungkannya sepanjang waktu. Oleh karena itu, perlu untuk melihat implementasi kode sumber dari fungsi Append.
Lihatlah metode append dari kelas induknya AbstractStringBuilder
Ketika array nilai tidak mampu memiliki kapasitas yang cukup, array nilai baru dibuat untuk menyimpan string. Pada titik ini, Anda harus memahami prinsip splicing string StringBuffer. Ketika array nilai char tidak cukup, array kapasitas yang lebih besar akan dibuat untuk disimpan. Efisiensi secara signifikan lebih tinggi dari string.
3.StringBuilder
StringBuilder dan StringBuffer adalah dua bersaudara, dan penggunaannya pada dasarnya sama. Perbedaannya adalah bahwa StringBuffer disinkronkan dan aman-utas, sedangkan StringBuilder tidak menjamin sinkronisasi dan amannya.
StringBuilder lebih cepat daripada StringBuffer di sebagian besar implementasi, dan ketika buffer string diakses oleh satu utas, disarankan untuk menggunakan StringBuilder terlebih dahulu.
Di atas adalah pilihan string Java yang diperkenalkan oleh editor. Saya harap ini akan membantu Anda. Jika Anda memiliki pertanyaan, silakan tinggalkan saya pesan dan editor akan membalas Anda tepat waktu. Terima kasih banyak atas dukungan Anda ke situs web Wulin.com!