Kelas
Pertimbangkan kod di bawah:
String
mencipta rentetan tidak berubah. Ini bermakna jika anda menggunakan sebarang operasi pada rentetan atau operasi pada rentetan, hasilnya akan menjadi rentetan baharu. Jika rentetan baharu ini tidak diberikan kepada mana-mana pembolehubah, hasil operasi akan hilang. Sehubungan itu, operasi pada rentetan tersebut semestinya membawa kepada penciptaan rentetan baharu. Dan ini bermakna memori tambahan dan kos masa pemproses. Jika terdapat banyak operasi pada rentetan, maka selalunya lebih cekap menggunakan rentetan dinamik, yang dilaksanakan oleh kelas StringBuilder
.
String s = "Some text";
int count = 100;
for(int i = 0; i<100;i++){
s+=i;
}
**********************
StringBuilder s = new StringBuilder(110);
int count = 100;
s.append("Some text");
for(int i = 0;i<count;i++){
s.append(i);
}
Kod di atas menangani masalah yang sama. Apabila kita menambah 100 subrentetan baharu pada rentetan yang diberikan. Contoh pertama menggunakan kelas untuk tujuan ini String
, yang tidak begitu cekap kerana setiap penambahan subrentetan membawa kepada pembinaan objek baharu String
. Dan ini adalah pembaziran memori dan masa tambahan. Dalam contoh kedua, masalah ini diselesaikan menggunakan kelas StringBuilder
. Kami mencipta objek kelas terlebih dahulu StringBuilder
, dan kemudian menggunakan kaedah append
yang kami bentuk rentetan yang kami perlukan dengan menukar kandungan objek yang dicipta StringBuilder
, tetapi tanpa mencipta semula objek itu sendiri.
GO TO FULL VERSION