Dalam Java, String, StringBuffer, dan StringBuilder sering digunakan kelas string dalam pemrograman. Perbedaan di antara mereka juga merupakan pertanyaan yang sering ditanyakan dalam wawancara. Sekarang ringkas dan lihat bagaimana mereka berbeda dan sama.
1. Variabel dan tidak berubah
Kelas String menggunakan array karakter untuk menyimpan string, sebagai berikut: karena ada pengubah "akhir", Anda dapat mengetahui bahwa objek string tidak dapat diubah.
nilai arang akhir pribadi [];
Baik StringBuilder dan StringBuffer diwarisi dari kelas AbstractStringBuilder. Dalam AbstractStringBuilder, array karakter digunakan untuk menyimpan string. Sebagai berikut, dapat dilihat bahwa kedua objek dapat berubah.
nilai char [];
2. Apakah itu multi-benang dan aman
Objek dalam string tidak dapat diubah, sehingga dapat dipahami sebagai konstanta, yang jelas-jelas aman.
AbstractStringBuilder adalah kelas induk publik dari StringBuilder dan StringBuffer, yang mendefinisikan beberapa operasi dasar string, seperti ExpandCapacity, Append, Insert, IndexOF dan Metode Publik lainnya.
StringBuffer telah menambahkan kunci sinkronisasi ke metode atau kunci sinkronisasi ke metode yang dipanggil, sehingga aman-aman. Lihat kode sumber berikut:
StringBuffer Reverse yang disinkronkan publik () {super.reverse (); return ini;} public int indexOf (string str) {return indexof (str, 0); // Ada Metode Int Int Sinkronisasi Publik (String Str String, int FromIndex)}StringBuilder tidak menambahkan kunci sinkronisasi ke metode ini, jadi itu tidak aman.
3. StringBuilder dan StringBuffer kesamaan
StringBuilder dan StringBuffer memiliki kelas orang tua publik AbstractStringBuilder ( kelas abstrak ).
Salah satu perbedaan antara kelas abstrak dan antarmuka adalah bahwa beberapa metode publik subkelas dapat didefinisikan dalam kelas abstrak. Subkelas hanya perlu menambahkan fungsi baru dan tidak perlu mengulangi metode yang ada; sementara antarmuka hanya mendefinisikan metode dan konstanta.
Metode StringBuilder dan StringBuffer akan memanggil metode publik di AbstractStringBuilder, seperti Super.Append (...). Hanya saja StringBuffer akan menambahkan kata kunci yang disinkronkan ke metode ini dan menyinkronkannya.
Akhirnya, jika program ini tidak multi-threaded, maka menggunakan StringBuilder lebih efisien daripada StringBuffer.
Artikel di atas analisis mendalam tentang perbedaan antara String, StringBuffer dan StringBuilder di Java adalah semua konten yang saya bagikan dengan Anda. Saya harap Anda dapat memberi Anda referensi dan saya harap Anda dapat mendukung wulin.com lebih lanjut.