Java-da String və StringBuilder: fərqlər və istifadə qaydaları
-
Java proqramlaşdırma dilində mətnlə işləmək üçün ən çox istifadə olunan iki class var:
String
vəStringBuilder
. Bu məqalədə bu iki class-ın fərqlərini, üstünlüklərini və hansı hallarda istifadə olunmalı olduqlarını izah edəcəyik.
1. String nədir?
Java-da
String
— dəyişməz (immutable) bir obyekt növüdür. Yəni, bir dəfə yaradıldıqdan sonra onun məzmunu dəyişdirilə bilməz. Əgər dəyişiklik etsəniz, əslində yeni birString
obyekti yaranacaq.Nümunə:
String ad = "Nilay"; ad = ad + " Huseynova"; System.out.println(ad); // Nəticə: Nilay Huseynova
Yuxarıdakı nümunədə
ad + " Huseynova"
ifadəsi yeni birString
obyekt yaradır və köhnə obyekt dəyişmir. Bu səbəbdən çoxlu string birləşdirmələri performans baxımından zəif ola bilər.
2. StringBuilder nədir?
StringBuilder
Java-da dəyişə bilən (mutable) string-lər yaratmaq üçün istifadə olunur. Bu class, xüsusilə çoxlu sayda string birləşdirmələri və dəyişikliklər aparıldıqda çox daha sürətli və effektiv işləyir.Nümunə:
StringBuilder ad = new StringBuilder("Nilay"); ad.append(" Huseynova"); System.out.println(ad); // Nəticə: Nilay Huseynova
Burada
.append()
metodu mövcudStringBuilder
obyektinə əlavə edir və yeni obyekt yaratmır.
3. String və StringBuilder arasındakı fərqlər
Xüsusiyyət String StringBuilder Dəyişə bilmə Dəyişməz (immutable) Dəyişə bilən (mutable) Performans Aşağı (çoxlu birləşmələrdə) Yüksək Thread-safe Bəli ( String
təhlükəsizdir)Xeyr (lakin daha sürətlidir) İstifadə məqsədi Az dəyişiklik olan mətnlər Tez-tez dəyişən mətnlər üçün Qeyd: Əgər multithreading istifadə edirsinizsə və
StringBuilder
lazımdırsa, onunthread-safe
versiyası olanStringBuffer
istifadə olunmalıdır.
4. Hansı zaman hansından istifadə etməli?
Ssenari İstifadə Mətni bir neçə dəfə dəyişəcəksiniz StringBuilder
Mətni nadir hallarda dəyişirsiniz və sadəcə oxuyursunuz String
Multithreading mühitində təhlükəsizlik vacibdirsə StringBuffer
==
və.equals()
ilə müqayisə edirsinizString
5. Əlavə faydalı StringBuilder metodları
.append(String s)
– sonda string əlavə edir.insert(int offset, String s)
– müəyyən mövqeyə string əlavə edir.replace(int start, int end, String s)
– müəyyən hissəni əvəz edir.delete(int start, int end)
– hissəni silir.reverse()
– mətni tərsinə çevirir.toString()
–StringBuilder
obyektini adiString
-ə çevirir
Nümunə:
StringBuilder sb = new StringBuilder("Salam"); sb.reverse(); System.out.println(sb); // Nəticə: malaS
6. String-lərin daxilindəki simvolları gözlənilməz davranışlar
String a = "Java"; String b = "Java"; String c = new String("Java"); System.out.println(a == b); // true (eyni obyektə işarə edir) System.out.println(a == c); // false (fərqli obyekt) System.out.println(a.equals(c)); // true (məzmun eynidir)
Burada
.equals()
məzmun müqayisəsi aparır,==
isə obyektin ünvanını yoxlayır.
Nəticə
Java-da
String
vəStringBuilder
hər biri fərqli hallarda istifadə edilməlidir:String
: dəyişməzdir, oxunaqlıdır, lakin performansı zəif ola bilər.StringBuilder
: dəyişkəndir, sürətlidir və string manipulyasiyası üçün idealdır.
Sadə və az dəyişən mətni saxlamaq üçün
String
, lakin çoxlu dəyişiklik edilən mətnlər üçünStringBuilder
seçmək daha düzgündür.
Bilik paylaşdıqca artan bir sərvətdir