Sobes.tech
Junior

Java proqramlaşdırma dilində String sinfi haqqında danış.

sobes.tech Süni İntellekt

AI-dan cavab

Java'da String sinfi, dəyişməz bir simvol ardıcıllığını təmsil edir.

Əsas xüsusiyyətlər və xüsusiyyətlər:

  • Dəyişməzlik (Immutability): String obyektini yaratdıqdan sonra, onun məzmunu dəyişdirilə bilməz. Hər hansı bir əməliyyat, sətiri dəyişdiyinə bənzəsə də (məsələn, birləşdirmə), əslində yeni String obyekti yaradılır. Bu, təhlükəsizliyi və çox iplikli mühitlərdə təhlükəsizliyi artırır.
  • + operatorunun yüklənməsi: Sətirlər üçün + operatoru yüklənmişdir ki, birləşdirmə əməliyyatını həyata keçirsin.
  • İki yaradılma üsulu:
    • Sətir literalı ilə: String s1 = "Hello"; - Sətir hovuzunda yaradılır.
    • new operatoru ilə: String s2 = new String("World"); - Heap-də yaradılır, hətta eyni literal hovuzda olsa belə, yeni obyekt yarada bilər.
  • Sətir hovuzu (String Pool): Heap-də yerləşən və yaddaşın optimallaşdırılması üçün sətir literal'larının saxlandığı sahə. Sətir literal'ı yaradılarkən JVM əvvəlcə hovuzu yoxlayır. Əgər artıq mövcuddursa, mövcud obyektə istinad qaytarılır. Əks halda, yeni obyekt yaradılır və hovuzda yerləşdirilir.
  • Əsas və faydalı metodlar:
    • length(): Sətirin uzunluğunu qaytarır.
    • charAt(int index): Verilən indeksdəki simvolu qaytarır.
    • substring(int beginIndex, int endIndex): Alt sətir qaytarır.
    • contains(CharSequence s): Sətirin verilmiş simvol ardıcıllığını ehtiva edib-etmədiyini yoxlayır.
    • indexOf(int ch) / indexOf(String str): Birinci tapılma indeksini qaytarır.
    • equals(Object anObject): Sətirlərin məzmununu müqayisə edir. Məzmunu müqayisə etmək üçün equals() istifadə etmək vacibdir, == deyil, çünki referansları müqayisə edir.
    • equalsIgnoreCase(String anotherString): Böyük və kiçik hərfləri nəzərə almadan müqayisə edir.
    • replace(char oldChar, char newChar) / replace(CharSequence target, CharSequence replacement): Simvolları və ya alt sətirləri dəyişdirir.
    • trim(): Sətirin əvvəlində və sonunda boşluqları silir.
    • split(String regex): Sətiri ayırıcıya görə alt sətirlərə bölür.

Nümunə yaradılması və bəzi əməliyyatlar:

// Literal ilə yaradılması
String str1 = "Java";

// new ilə yaradılması
String str2 = new String("Java");

// Birgəlik
String str3 = str1 + " is amazing";

// Məzmun müqayisəsi (equals istifadə etməklə, == yox)
boolean areEqualContent = str1.equals(str2); // true

// Referansların müqayisəsi (== istifadə etməklə)
boolean areEqualReference = (str1 == str2); // false

// Sətirin uzunluğu
int length = str3.length();

// Simvolu alma
char firstChar = str1.charAt(0); // 'J'

// Məzmunu yoxlama
boolean containsIs = str3.contains("is"); // true

String-in dəyişməzliyi, sətirin çoxsaylı dəyişikliklərində səmərəsizliklərə səbəb ola bilər, çünki hər dəfə yeni obyekt yaradılır. Belə ssenarilər üçün StringBuilder və ya StringBuffer istifadə etmək daha məqsədəuyğundur.