Sobes.tech
Junior
179

Java-da String sinfi haqqında nə bilirsiniz?

AI-dan cavab

sobes.tech Süni İntellekt

Java-da String dəyişməz (immutable) sinifdir və simvollar ardıcıllığını təmsil edir.

Əsas xüsusiyyətlər:

  • Dəyişməzlik: String obyektini yaratdıqdan sonra onun məzmunu dəyişdirilə bilməz. Hər hansı bir əməliyyat, sanki stringi dəyişdirirmiş kimi görünürsə də, əslində yeni String obyekti qaytarır. Bu, String obyektlərini çoxmərhələli mühitlərdə təhlükəsiz edir.
  • String hovuzu (String Pool): Java string hovuzunu idarə edir. "salam" kimi string literal yaradıldıqda, JVM əvvəlcə hovuzu yoxlayır. Əgər belə bir string artıq mövcuddursa, mövcud obyektə istinad qaytarılır. Əks halda, yeni obyekt hovuzda yaradılır. new String("salam") istifadə edildikdə isə hər zaman yeni obyekt hovuzdan kənarda yaradılır.
  • + operatorunun yüklənməsi: + operatoru stringlərin birləşdirilməsi üçün yüklənmişdir. Kompilyator performansı artırmaq üçün StringBuilder və ya StringBuffer istifadə edə bilər.
  • İnterfeyslərin tətbiqi: String Serializable, Comparable<String>CharSequence interfeislərini həyata keçirir.
  • Metodlar: String sinfi stringlərlə işləmək üçün çox sayda faydalı metodlar təqdim edir: length(), charAt(), substring(), indexOf(), equals(), equalsIgnoreCase(), startsWith(), endsWith(), trim(), replace(), split() və digər.

Stringlərin yaradılması nümunələri:

// Literal vasitəsilə yaradılması (string hovuzundan istifadə edir)
String str1 = "Hello";

// Konstruktor vasitəsilə yaradılması (yeni obyekt yaradır, hovuzdan kənarda)
String str2 = new String("World");

// Simvol massivindən yaradılması
char[] chars = {'J', 'a', 'v', 'a'};
String str3 = new String(chars);

Stringlərin müqayisəsi:

  • equals(): Stringlərin məzmununu müqayisə edir.
  • ==: Obyekt referanslarını müqayisə edir. Eyni məzmunlu string literal'lar adətən hovuzda eyni referansa işarə edir, amma new String() ilə yaradılan obyektlər üçün == false olacaq, hətta məzmun eyni olsa belə.
String s1 = "java";
String s2 = "java";
String s3 = new String("java");

System.out.println(s1 == s2); // true (hər ikisi hovuzdadır)
System.out.println(s1 == s3); // false (s3 yeni obyektdir)
System.out.println(s1.equals(s3)); // true (məzmuna görə müqayisə edir)

Java-da stringləri dəyişdirmək üçün StringBuilder (sinxronizasiya olunmamış, tək ipli mühitlər üçün) və StringBuffer (sinxronizasiya olunmuş, çox ipli mühitlər üçün) siniflərindən istifadə edilir, bunlar dəyişkəndir.

// `StringBuilder` nümunəsi
StringBuilder sb = new StringBuilder("Hello");
sb.append(" World");
String result = sb.toString(); // Yenidən String-ə çevrilir
System.out.println(result); // Nəticə: Hello World