MySQL Java JavaScript PHP Python HTML-CSS C-sharp

Introducere în șiruri - Clasa String

Un șir reprezintă o secvență de caractere. Pentru lucrul cu șiruri în Java este definită clasa String, care oferă o serie de metode pentru manipularea șirurilor. Fizic, un obiect String reprezintă o referință la o zonă din memorie unde sunt plasate caracterele.

Pentru a crea un nou șir, putem folosi unul dintre constructorii clasei String sau să atribuim direct un șir în ghilimele duble:

public static void main(String[] args) {
   String str1 = "Java";
   String str2 = new String(); // șir gol
   String str3 = new String(new char[] {'h', 'e', 'l', 'l', 'o'});
   String str4 = new String(new char[]{'w', 'e', 'l', 'c', 'o', 'm', 'e'}, 3, 4); // 3 - indexul de început, 4 - numărul de caractere
   
   System.out.println(str1); // Java
   System.out.println(str2); //
   System.out.println(str3); // hello
   System.out.println(str4); // come
}

Când lucrăm cu șiruri de caractere, este important de înțeles că obiectul String este imuabil (immutable). Asta înseamnă că la orice operație asupra șirului care modifică acest șir, va fi creat un nou șir de caractere.

Deoarece un șir este considerat un set de caractere, putem aplica metoda length() pentru a găsi lungimea șirului sau lungimea setului de caractere:

String str1 = "Java";
System.out.println(str1.length()); // 4

Cu ajutorul metodei toCharArray(), putem transforma din nou șirul într-un tablou de caractere:

String str1 = new String(new char[] {'h', 'e', 'l', 'l', 'o'});
char[] helloArray = str1.toCharArray();

Un șir poate fi gol. Pentru aceasta, i se pot atribui ghilimele goale sau se pot elimina toate caracterele din șir:

String s = "";   // șir gol
if(s.length() == 0) System.out.println("String is empty");

În acest caz, lungimea șirului returnată de metoda length() este 0.

Clasa String are o metodă specială care permite verificarea dacă un șir este gol - isEmpty(). Dacă șirul este gol, aceasta returnează true:

String s = "";   // șir gol
if(s.isEmpty()) System.out.println("String is empty");

O variabilă de tip String poate să nu indice un obiect și să aibă valoarea null:

String s = null;   // șirul nu indică un obiect
if(s == null) System.out.println("String is null");

Valoarea null nu este echivalentă cu un șir gol. De exemplu, în următorul caz, ne vom confrunta cu o eroare de execuție:

String s = null;   // șirul nu indică un obiect
if(s.length() == 0) System.out.println("String is empty");    // ! Eroare

Deoarece variabila nu indică niciun obiect String, nu putem apela metodele obiectului String. Pentru a evita astfel de erori, putem verifica preventiv șirul pentru valoarea null:

String s = null;   // șirul nu indică un obiect
if(s == null || s.length() == 0) System.out.println("String is empty");

Principalele metode ale clasei String

Principalele operații cu șiruri de caractere sunt desfășurate prin metodele clasei String, dintre care putem evidenția următoarele:

  • concat(): unește șiruri
  • valueOf(): transformă un obiect într-o reprezentare de tip șir
  • join(): unește șiruri cu un separator
  • compareTo(): compară două șiruri
  • charAt(): returnează caracterul șirului după index
  • getChars(): returnează un grup de caractere
  • equals(): compară șiruri ținând cont de majuscule/minuscule
  • equalsIgnoreCase(): compară șiruri fără a ține cont de majuscule/minuscule
  • regionMatches(): compară subșiruri
  • indexOf(): găsește indexul primei apariții a unui subșir
  • lastIndexOf(): găsește indexul ultimei apariții a unui subșir
  • startsWith(): determină dacă un șir începe cu un subșir
  • endsWith(): determină dacă un șir se termină cu un subșir
  • replace(): înlocuiește un subșir cu altul
  • trim(): elimină spațiile de la începutul și sfârșitul șirului
  • substring(): returnează un subșir, începând de la un anumit index până la sfârșit sau până la un anumit index
  • toLowerCase(): transformă toate caracterele șirului în litere mici
  • toUpperCase(): transformă toate caracterele șirului în litere mari

Vom analiza funcționarea acestor metode.

← Lecția anterioară Lecția următoare →