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:
Stringobyektini 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ə yeniStringobyekti qaytarır. Bu,Stringobyektlə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 üçünStringBuildervə yaStringBufferistifadə edə bilər.- İnterfeyslərin tətbiqi:
StringSerializable,Comparable<String>vəCharSequenceinterfeislərini həyata keçirir. - Metodlar:
Stringsinfi 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, ammanew String()ilə yaradılan obyektlər üçün==falseolacaq, 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