TLG Andrei26 Posted December 19, 2017 Share Posted December 19, 2017 Clasa String Un literal String este o secventa de caractere cuprinsa intre ghilimele (exemplu: "Ana are mere"). Daca se doreste afisarea ghilimelelor, atunci se foloseste \" , iar \n pentru trecerea pe linie noua. Crearea unei variabile String se realizeaza exact ca si in cazul celorlalte variabile. String sir = "Primul sir"; sir = "Al doilea sir"; Cand se atribuie unei variabile de tip String o alta valoare, vechea referinta se pierde, valoarea sa urmand a fi eliberata automat din memorie de catre colectorul de gunoaie. Se mai spune ca obiectele String sunt fixe (nemodificabile). Daca un sir se initializeaza cu un literal String, atunci i se va atribui adresa acestuia din memorie. Literalii String sunt pastrati in tabela de literali. Operatorul == aplicat pentru doua String-uri testeaza daca acestea pointeaza catre aceeasi adresa de memorie. Exemplu: // literalul "abc" are o adresa fixa din memorie String a1 = "abc"; // a1 si b1 pointeaza la aceeasi adresa de memorie String b1 = "abc; if(a1==b1) System.out.println("1. Egalitate"); else System.out.println("1. Diferenta"); String a2 = "abc"; // b2 va pointa la alta adresa de memorie fata de a2 String b2 = new String("abc"); if(a2==b2) System.out.println("2. Egalitate"); else System.out.println("2. Diferenta"); Programul va afisa: 1. Egalitate 2. Diferenta Utilizarea operatorului new pentru un String conduce in momentul executiei codului la crearea unui spatiu in memoria programului, si nu in tabela de literali. Putem stabili ca un String creat cu new sa fie plasat in tabela de literali pentru o reutilizare ulterioara sau pentru refolosirea unui String identic din tabela de literali. Astfel putem utiliza metoda intern() din clasa String. Exemplu: String a1 = new String("abc"); String b1 = new String("abc"); String a2 = a1.intern(); //a2 se afla in tabela de literali String b2 = b1.intern(); //b2 se afla in tabela de literali //a2 si b2 pointeaza la aceeasi adresa de memorie if(a2==b2) System.out.println("Sirurile pointeaza la aceeasi adresa."); else System.out.println("Sirurile pointeaza la adrese diferite."); Tablouri de String-uri Exemplu: String[] nume = new String[5]; nume[0] = "Alex"; nume[1] = "Bogdan"; Operatorul + conecteaza doua sau mai multe siruri de caractere. Operatorul += creeaza un nou String, adaugand sirul din partea dreapta a operatorului. Exemplu: String sir1 = "abc" + "def"; String sir2 = "abc"; sir2 += "def"; System.out.println("sir2 = " + sir2); Afisaj: sir2 = abcdef Daca aveti nelamuriri, astept PM. Link to comment Share on other sites More sharing options...
South HawKing Posted December 28, 2017 Share Posted December 28, 2017 Multumim! Link to comment Share on other sites More sharing options...
Recommended Posts