CodeGym /Kurslar /Java SELF AZ /StringBuilder Java-da

StringBuilder Java-da

Java SELF AZ
Səviyyə , Dərs
Mövcuddur

1. Sətirlərin dəyişdirilməsi

Java-da sətirlər dəyişməz obyektlərdir (immutable). Bu, sətir sinfinin güclü optimizasiya olunması və hər yerdə istifadə olunması üçün belə hazırlanıb. Məsələn, HashMap kolleksiyasındakı açar kimi yalnız immutable tipləri istifadə etmək tövsiyə olunur.

Lakin çox vaxt elə vəziyyətlər yaranır ki, proqramçı üçün String sinfini dəyişə bilmək daha rahat olur. Yəni, hər metod çağırışında yeni alt sətir yaratmayan bir sinif.

Məsələn, bizdə çox böyük bir sətir varsa və biz tez-tez onun sonuna nəsə əlavə edirik. Bu vəziyyətdə hətta simvollar kolleksiyası (ArrayList<Character>) belə sətirlərin təkrar yaradılmasından və String tipli obyektlərin birləşdirilməsindən daha effektiv ola bilər.

Məhz bu səbəbdən, Java dilinə String-in dəyişdirilə bilən tipi əlavə edilib. O, StringBuilder adlanır.

Obyektin yaradılması

Mövcud sətir əsasında StringBuilder obyektini yaratmaq üçün aşağıdakı əmri yerinə yetirmək lazımdır:

StringBuilder ad = new StringBuilder(sətir);

Boş dəyişdirilə bilən bir sətir yaratmaq üçün aşağıdakı əmrdən istifadə etməlisiniz:

StringBuilder ad = new StringBuilder();

Metodların siyahısı

StringBuilder sinfinin iki onluq faydalı metodu var, ən vaciblərindən bəziləri bunlardır:

Metod Təsviri
StringBuilder append(obj)
Göndərilən obyekti sətirə çevirir və mövcud sətirə əlavə edir
StringBuilder insert(int index, obj)
Göndərilən obyekti sətirə çevirir və mövcud sətirə daxil edir
StringBuilder replace(int start, int end, String str)
Start..end intervalı ilə təyin olunan sətir hissəsini göndərilən sətrə dəyişir
StringBuilder deleteCharAt(int index)
Sətirdən index nömrəli simvolu silir
StringBuilder delete(int start, int end)
Interval ilə təyin olunan sətir simvollarını silir
int indexOf(String str, int index)
Mövcud sətirdə alt sətiri axtarır
int lastIndexOf(String str, int index)
Mövcud sətirdə alt sətiri sondan axtarır
char charAt(int index)
Simvolu index ilə qaytarır
String substring(int start, int end)
Interval ilə təyin olunan alt sətiri qaytarır
StringBuilder reverse()
Sətiri tərs çevirir.
void setCharAt(int index, char)
Simvolu index ilə dəyişir
int length()
Sətirin uzunluğunu simvollar ilə qaytarır

Hər metodun qısa təsviri budur


2. Metodlar haqqında qısa təsvir

Sətirə əlavə etmək

Dəyişilən sətrə (StringBuilder) bir şey əlavə etmək üçün append() metodundan istifadə etməlisən. Nümunə:

Kod Təsvir
StringBuilder builder = new StringBuilder("Salam");
builder.append("Hələlik");
builder.append(123);
Salam
SalamHələlik
SalamHələlik123

Adı standart sətrə çevirmək

Bir StringBuilder obyektini String tipli sətrə çevirmək üçün sadəcə toString() metodunu çağırmaq kifayətdir. Nümunə:

Kod Ekranda nəticə
StringBuilder builder = new StringBuilder("Salam");
builder.append(123);
String result = builder.toString();
System.out.println(result);
Salam123

Simvolu necə silmək olar?

Dəyişilən sətrdə simvolu silmək üçün deleteCharAt() metodundan istifadə etmək lazımdır. Nümunə:

Kod Ekranda nəticə
StringBuilder builder = new StringBuilder("Salam");
builder.deleteCharAt(2);
String result = builder.toString();
System.out.println(result);
Slm

Sətirin bir hissəsini necə dəyişmək olar?

Bunun üçün replace(int begin, int end, String str) metodu var. Nümunə:

Kod Ekranda nəticə
StringBuilder builder = new StringBuilder("Salam");
builder.replace(2, 5, "Hello!");
String result = builder.toString();
System.out.println(result);
SaHello!m


3. Sətirlərlə işləmək üçün faydalı nümunələr

Sətiri necə geriyə çevirmək olar?

Bu əməliyyat üçün xüsusi bir metod var — reverse(); Nümunə:

Kod Ekranda çıxış
String str = "Salam";
StringBuilder builder = new StringBuilder(str);
builder.reverse();
String result = builder.toString();
System.out.println(result);
malaS

StringBuffer sinfi

Daha bir sinif var — StringBuffer — bu, StringBuilder sinfinin analoqudur, sadəcə onun metodlarında synchronized modifikatoru var. Bu o deməkdir ki, StringBuffer obyektinə eyni anda bir neçə thread-lə müraciət etmək mümkündür.

Ancaq onun işləməsi StringBuilder-dən daha yavaşdır. Bu sinif sizə lazım ola bilər, multi-threading haqqında aktiv şəkildə öyrənməyə başladığınız zaman, Java Multithreading missiyasında.


Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION