Sinif
Aşağıdakı kodu nəzərdən keçirin:
String
dəyişməz sətirlər yaradır. Bu o deməkdir ki, sətirə hər hansı əməliyyat və ya sətirə əməliyyat tətbiq etsəniz, nəticə yeni sətir olacaq. Bu yeni sətir hər hansı dəyişənə təyin edilməzsə, əməliyyatın nəticəsi itiriləcək. Müvafiq olaraq, belə sətirlər üzərində əməliyyatlar mütləq yeni sətirin yaradılmasına gətirib çıxarır. Bu isə əlavə yaddaş və prosessor vaxtı xərcləri deməkdir. Bir sətirdə çoxlu əməliyyatlar varsa, sinif tərəfindən həyata keçirilən dinamik sətirlərdən istifadə etmək çox vaxt daha səmərəlidir 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);
}
Yuxarıdakı kod eyni problemi həll edir. Verilmiş sətirə 100 yeni alt sətir əlavə etdikdə. Birinci misal bu məqsəd üçün sinifdən istifadə edir String
, bu o qədər də səmərəli deyil, çünki alt sətirin hər əlavə edilməsi yeni obyektin qurulmasına gətirib çıxarır String
. Bu isə əlavə yaddaş və vaxt itkisidir. İkinci misalda bu problem sinifdən istifadə etməklə həll olunur StringBuilder
. Biz əvvəlcədən sinif obyektini yaradırıq StringBuilder
və sonra metoddan istifadə edərək append
yaradılmış obyektin məzmununu dəyişdirərək StringBuilder
, lakin obyektin özünü yenidən yaratmadan bizə lazım olan sətri formalaşdırırıq.
GO TO FULL VERSION