"Bună, Amigo!"

— Dar, Bilaabo, ai salutat deja.

"Serios? Ei bine, încă îmi place să încep fiecare lecție cu acea frază."

„Astăzi vom studia în profunzime clasa String”.

"Dar, știu deja totul despre asta. Știu chiar că clasa String este imuabilă."

"Clasa String are 46 de metode. Câte dintre ele cunoașteți?"

"Nu mai mult de zece. De fapt, probabil aproximativ 5 maxim."

— Atunci ascultă.

„Creatorii lui Java au observat că majoritatea șirurilor din programe nu sunt destinate să fie modificate, dar uneori se modifică oricum. Este foarte enervant când creezi un String, salvezi ceva important în el, îl dai metodei altcuiva și acesta este schimbat. Pentru a împiedica acest lucru să se întâmple, au decis să creeze atât șiruri mutabile, cât și imuabile.”

„Clasa String este pentru șiruri imuabile, iar clasa StringBuilder este pentru cele mutabile. Obiectele acestor clase sunt ușor convertite în celălalt tip. În cele mai multe cazuri, dezvoltatorii Java au nevoie pur și simplu de String, ceea ce demonstrează că creatorii Java au avut dreptate.”

"Deci, dacă am nevoie de un String, folosesc clasa String. Și dacă am nevoie de un String mutabil, atunci folosesc clasa StringBuilder ?"

"Da. De fapt, există o altă clasă numită StringBuffer. Este o copie a StringBuilder, cu excepția faptului că toate metodele sale sunt declarate ca sincronizate , astfel încât obiectul poate fi accesat din diferite fire ale programului."

"Și cum rămâne cu acest exemplu? Nu se schimbă șirul aici?"

String s = "cat";
s = s + "-" + s;

„Nu. Există două obiecte String aici: «cat» și «cat-cat». Al doilea este creat folosind primul, dar primul obiect nu se schimbă. În realitate, lucrurile sunt mult mai interesante aici. Iată codul compilatorul generează atunci când compilează exemplul tău:"

String s = "cat";
StrinsBuilder s2 = new StringBuilder(s);
s2.append("-");
s2.append(s);
s = s2.toString();

„Deci, StringBuilder este aproape întotdeauna folosit pentru a crea șiruri noi, dar uneori compilatorul pur și simplu face toată munca pentru tine. Dar versiunea ta este mai simplă, nu crezi?”

„Da, este minunat că Java are un compilator atât de avansat.”

„Ei bine, acum să trecem prin metodele clasei String:”

1) Cum găsesc lungimea unui șir?

„ Metoda lungimii returnează lungimea unui șir de caractere (numărul de caractere din acesta).”

Metoda(e) Exemplu(e)
int length();
String s = "Good news, everyone!";
int n = s.length();
int n = "Good news, everyone!".length();

2) Cum obțin un caracter dintr-un șir?

„ Metoda charAt returnează un caracter dintr-un șir după indexul său. Indicii caracterelor încep de la 0.

Metoda(e) Exemplu(e)
char charAt(int index)
String s = "Good news, everyone!";
char n = s.charAt(5);
char n = "Good news, everyone!".charAt(5);

3) Cum obțin caractere dintr-un șir?

Cum obțin caractere dintr-un șir?

Metoda(e) Exemplu(e)
char[]toCharArray ()
String s = "Good news, everyone!";
for(char c: s.toCharArray())
{
System.out.println(c);
}

4) Cum compar șirurile de caractere?

„Metoda equals verifică dacă Strings se potrivesc, iar metoda equalsIgnoreCase verifică dacă Strings se potrivesc atunci când este ignorată.

Metoda(e) Metoda(e)
boolean equals(Object o)
String s = "cat";
boolean test1 = s.equals("cat");//true
boolean test2 = s.equals("Cat");//false
boolean test3 = s.equals("c"+"a"+"t");//true
boolean equalsIgnoreCase(String str)
String s = "cat";
boolean test1 = s.equalsIgnoreCase("cat");//true
boolean test2 = s.equalsIgnoreCase("Cat");//true
boolean test3 = s.equalsIgnoreCase("cAT");//true

5) Cum fac toate literele dintr-un șir de caractere mari sau mici?

„ Metoda toUpperCase returnează o copie a String-ului cu toate literele mari.”

„ Metoda toLowerCase returnează o copie a String-ului cu toate literele mici.”

Metoda(e) Exemplu(e)
String toUpperCase()
String s = " Good news, everyone!  ";
s = s.toUpperCase();

Rezultat:

s == "GOOD NEWS, EVERYONE!";
String toLowerCase()
String s = "Good news, everyone!";
s = s.toLowerCase();

Rezultat:

s == "good news, everyone!";

6) Cum elimin spațiile la începutul și la sfârșitul unui șir?

„Metoda trim returnează o copie a unui șir fără caractere de spații albe la început și la sfârșit.”

Metoda(e) Exemplu(e)
String trim()
String s = "   Good news, everyone!   ";
s = s.trim();

Rezultat:

s == "Good news, everyone!";