Sunteți pe pagina 1din 8

Tehnologii Avansate de Programare , Limbajul Java, 2019 CEITI

Tema10. Șiruri de caractere. Clasele String, StringBuffer, StringTokenizer. Interfața CharSequence.

Ce sunt șirurile de caractere?


String-urile, numite șiruri de caractere, sunt pe larg utilizate în orice limbaj de programare, și
reprezintă o secvență de caractere. În Java string-urile sunt considerate obiecte, adică sunt de tip
referință. Platforma Java oferă diferite clase și interfețe de lucru cu șirurile de caractere:
a. Clasa String
b. Clasa StringBuffer
c. Clasa StringTokenizer
d. Interfața CharSequence

Care sunt metodele clasei String?


Definiție:
public final class String extends Object
implements Serializable, Comparable<String>, CharSequence
Descriere:
Clasa String se află în pachetul java.lang și este utilizată pentru crearea și prelucrarea șirurilor
de caractere. Este o clasă închisă spre modificare (immutable), adică o clasă obiectele căreia nu se
modifică. Orice valoare atribuită obiectului rămîne în sistem creând astfel a mulțime de obiecte
neutilizate. Pentru a crea un șir de caractere puteți utiliza sintaxa:
String identificator = ”Valoare”;
De exemplu: String zi = ”Luni”;
Ori de cîte ori compilatorul găsește un literal String în codul sursă acesta crează un obiect de tipul
clasei String ce va conține ca valoare literalul.
La fel ca și în cazul celorlalte obiecte, puteți folosi constructorul clasei String pentru a crea o instanță
a acestei clase.
De exemplu: String zi = new String(”Luni”);
Metode:
a) char charAt(int index) - returnează caracterul ce se află pe poziția index. Indicele
caracterului din șir variază de la 0 la length()-1.
De exemplu:
String s = "Java";
System.out.println(s.charAt(1)); //a

b) public boolean equals(Object unObiect)– returnează true dacă obiectul curent


este echivalent ca valoare cu string-ul unObiect, în caz contrar returnează false. Se ține cont
de litere mari și mici.
De exemplu:
String s = "Java";
String s1 = "Java";
String s2 = "java";
System.out.println(s.equals(s1)); //true
System.out.println(s.equals(s2)); //false

opreavictoria86@gmail.com © MUSTEAȚĂ Victoria


1
Tehnologii Avansate de Programare , Limbajul Java, 2019 CEITI
c) public boolean equalsIgnoreCase(String altString)- returnează true
dacă obiectul curent este echivalent ca valoare cu string-ul altString, în caz contrar
returnează false. Nu se ține cont de litere mari si mici.
De exemplu:
String s = "Java";
String s1 = "java";
String s2 = "Java";
System.out.println(s.equalsIgnoreCase(s1)); //true
System.out.println(s.equalsIgnoreCase(s2)); //true
Notă! Operatorul == aplicat asupra a două șiruri de caractere nu va verifica egalitatea acestora
ci identitatea șirurilor, adică se vor compara referințele și se va returna true dacă acestea vor fi
egale. Se va verifica dacă cele două șiruri indică unul și același obiect.
De exemplu:
String s = "Java";
String s1 = "POO";
String s2 = s;
System.out.println(s==s1); //false
System.out.println(s2==s); //true
d. public int length() - returnează lungimea șirului de caractere.
De exemplu:
String s = "Java";
System.out.println(s.length()); //4
e. public boolean isEmpty() - returnează true dacă și numai dacă length() este 0.
De exemplu:
String s = "Java" ;
String s2 = "";
System.out.println(s.isEmpty()); // false
System.out.println(s2.isEmpty()); // true
f. public boolean startsWith(String prefix, int toffset)- verifică dacă
substrigul din șirul dat începînd cu poziția toffset începe cu prefixul prefix.
De exemplu:
String s = "Programare" ;
System.out.println(s.startsWith("ram", 3)); //false
System.out.println(s.startsWith("ram", 4)); //true
System.out.println(s.startsWith("ram", 10)); //false
System.out.println(s.startsWith("ram", -3)); //false
g. public boolean startsWith(String prefix) - verifică dacă șirul dat începe cu
prefixul prefix.
De exemplu:
String s = "Programare" ;
System.out.println(s.startsWith("Prog")); //true
System.out.println(s.startsWith("ram")); //false
h. public boolean endsWith(String suffix)- verifică dacă șirul dat finisează cu
sufixul suffix.
De exemplu:
String s = "Programare" ;
System.out.println(s.endsWith("re")); //true

opreavictoria86@gmail.com © MUSTEAȚĂ Victoria


2
Tehnologii Avansate de Programare , Limbajul Java, 2019 CEITI
i. public int indexOf(String ch)-Returnează indicele caracterului ch în cadrul unui
șir de caractere.
De exemplu:
String s = "Programare" ;
System.out.println(s.indexOf("r")); //1
System.out.println(s.indexOf("b")); //-1
System.out.println(s.indexOf("P")); //0
System.out.println(s.indexOf("p")); //-1
j. public int lastIndexOf(String ch) - Returnează indicele ultimei apariíi a
caracterului ch în cadrul unui șir de caractere.
De exemplu:
String s = "Programare" ;
System.out.println(s.lastIndexOf("r")); //8
System.out.println(s.lastIndexOf("b")); //-1
System.out.println(s.lastIndexOf("o")); //2
k. public String concat(String str) – concatinează două șiruri de caractere.
De exemplu:
String s = "programez in " ;
String s1 = " Java" ;
s.concat(s1);
System.out.println(s); // programez
String s3 = s.concat(s1);
System.out.println(s3); // programez in Java
System.out.println("Eu ".concat(s3)+" azi"); //Eu programez in Java azi
l. public String replace(char oldChar, char newChar) - returnează un string
rezultat din înlocuirea tuturor aparițiilor caracterelor specificate în oldChar prin newChar.
De exemplu:
String s = "tata";
System.out.println(s.replace("t", "m")); //mama
System.out.println("Ei pleaca".replace("Ei", "Ele")); //Ele pleaca
m. public boolean contains(CharSequence s) – returnează true daca și numai dacă
șirul de caractere conține secvența căutată specificată prin s.
De exemplu:
String s = "Programez in Java";
System.out.println(s.contains("Java")); //true
System.out.println("Ei pleaca".contains("Ele")); //false
n. public String toLowerCase()- Convertește toate literele șirului de caractere în
litere mici.
De exemplu:
String s = "Programez";
System.out.println(s.toLowerCase()); //programez
System.out.println("Ei pleaca".toLowerCase()); //ei pleaca
d. public String toUpperCase()- Convertește toate literele șirului de caractere în litere
mari.
De exemplu:
String s = "Programez";
System.out.println(s.toUpperCase()); //PROGRAMEZ
System.out.println("in java".toUpperCase()); //IN JAVA
opreavictoria86@gmail.com © MUSTEAȚĂ Victoria
3
Tehnologii Avansate de Programare , Limbajul Java, 2019 CEITI
e. public String substring(int beginIndex)- returnează un subșir din șirul asupra
căruia s-a apelat metoda începând cu indexul elementului din șir specificat prin beginIndex.
De exemplu:
String s = "Programez";
System.out.println(s.substring(3)); // gramez
System.out.println(s.substring(-1)); // StringIndexOutOfBoundsException
System.out.println(s.substring(9)); // nu se afiseaza nimic
f. substring(int IndexInitial, int IndexFinal)- returnează un subșir din șirul
asupra căruia s-a apelat metoda data începând cu caracterul aflat pe poziția IndexInitial
pînă la caracterul cu indicele IndexFinal.
De exemplu:
String s = "Programez";
System.out.println(s.substring(0,7)); // Program
System.out.println(s.substring(0,10)); //StringIndexOutOfBoundsException
System.out.println(s.substring(1,1)); // nu se afiseaza nimic
System.out.println(s.substring(3,1)); // StringIndexOutOfBoundsException
g. public String trim()- întoarce o copie a șirului fără spațiile de la începutul și sfârșitul
șirului.
De exemplu:
String s = " Programez ";
String s1 = "Programez";
System.out.println(s.equals(s1)); //false
System.out.println(s.trim().equals(s1)); //true

A se acorda o deosebită atenție atunci cînd lucrați cu operatorul de concatenare +. Se va


ține cont de următoarele reguli:
1. Dacă ambii operanzi sunt numerici operatorul + va efectua operația de adunare.
2. Dacă unul din operanzi este String operatorul + va efectua concatenarea.
3. Expresia este evaluată de la stânga la dreapta.
De exemplu:
String s1 = "Hello";
int a = 3;
String s2 ="4";
Rețineți !

String s3 ="4";
System.out.println(a+s1); //3Hello
System.out.println(s1+a); //Hello3
System.out.println(s2+s3); //44
System.out.println(1+2); //3
System.out.println("a"+"b"); //ab
System.out.println("a"+3); //a3
System.out.println("a"+3+4); //a34
System.out.println(3+"a"); //3a
System.out.println(3+4+"a"+6+1); //7a61
System.out.println("a"+6+1); //a61
System.out.println(6+1+"a"); //7a

opreavictoria86@gmail.com © MUSTEAȚĂ Victoria


4
Tehnologii Avansate de Programare , Limbajul Java, 2019 CEITI
Care sunt metodele clasei StringBuffer?
Definiție:
public final class StringBuffer extends Object implements
Serializable,CharSequence
Descriere:
Clasa StringBuffer se află în pachetul java.lang și este utilizată pentru crearea și prelucrarea
șirurilor de caractere ,,mutable”. Este asemănător clasei String, dar instanțele acesteia sunt
modificate, adică lungimea și conținutul șirului pot fi modificate de metodele care au fost apelate
pentru șirul dat.
StringBuffer - mutable String - immutable
StringBuffer s1 = new String s2=new String("Hello");
StringBuffer("Hello"); s2.concat("Hello");
s1.append("Hello"); System.out.println(s2);
System.out.println(s1); //Hello
// HelloHello
Pentru a crea un șir de caractere StringBuffer puteți utiliza sintaxa:
StringBuffer identificator = new StringBuffer(”Valoare”);
De exemplu: StringBuffer zi = new StringBuffer(”Luni”);
Sintaxa StringBuffer identificator =”Valoare”; nu este validă, deoarece literalul
este de tip String și nu poate fi atribuit unui StringBuffer.

Ori de cîte ori compilatorul găsește un literal String în codul sursă acesta crează un obiect de tipul
clasei String ce va conține ca valoare literalul.
La fel ca și în cazul celorlalte obiecte, puteți folosi constructorul clasei String pentru a crea o instanță
a acestei clase.
De exemplu: String zi = new String(”Luni”);
Metode:
Metode comune cu clasa String: charAt(), indexOf(), length(), substring().
Metode proprii:
a. StringBuffer()- constructorul clasei, construiește un șir de caractere StringBuffer fără
caractere cu o capacitate de 16 caractere.
b. StringBuffer(String str) - constructorul clasei, construiește un șir de caractere
StringBuffer cu valoarea str.
c. StringBuffer append(String str) – concatenează șirurile de caractere.
De exemplu:
StringBuffer s1 =new StringBuffer("Programez");
s1.append(" in Java");
System.out.println(s1); // Programez in Java
d. int capacity()– returnează capacitatea curentă a obiectului StringBuffer.
De exemplu:
StringBuffer s1 =new StringBuffer("Java");
System.out.println(s1.length()); //4
System.out.println(s1.capacity()); //20

opreavictoria86@gmail.com © MUSTEAȚĂ Victoria


5
Tehnologii Avansate de Programare , Limbajul Java, 2019 CEITI
e. StringBuffer delete(int start, int end)- va șterge subșirul aflat între poziția
specificată în parametrul start și poziția specificată în parametrul end .
De exemplu:
StringBuffer s1 =new StringBuffer("Programez");
s1.delete(7, 9);
System.out.println(s1); //Program
f. StringBuffer deleteCharAt(int index) - va șterge caracterul aflat pe poziția
specificată în parametrul index.
De exemplu:
StringBuffer s1 =new StringBuffer("Programez");
s1.deleteCharAt(8);
System.out.println(s1); //Programe
g. StringBuffer insert(int offset, String str) - va însera un șir de caractere
începînd cu poziția offset.
De exemplu:
StringBuffer s1 =new StringBuffer("ProgramJava");
s1.insert(7,"are" );
System.out.println(s1); //ProgramareJava
h. StringBuffer reverse() – inversează fiecare cuvând dintr-un șir de caratere și ordinea
apariției cuvintelor în șirul dat.
De exemplu:
StringBuffer s1 =new StringBuffer("Java Programare");
s1.reverse();
System.out.println(s1); //eramargorP avaJ

Care sunt metodele clasei StringTokenizer?


Definiție:
public class StringTokenizer extends Object
implements Enumeration<Object>
Descriere:
Clasa StringTokenizer aparține bibliotecii java.util, deci pachetul dat trebuie importat. Această clasă
permite separarea cuvintelor dintr-un șir de caractere. Constructorii acestei clase sunt:
StringTokenizer(String str, String delim, boolean returnSimbol)
StringTokenizer(String str, String delim)
StringTokenizer(String str)
Descrierea parametrilor constructorilor:
 str specifică șirul de caractere pe care trebuie separat.
 delim specifică o listă de caractere de delimitare. De exemplu, un argument delim "!?"
indică faptul că delimitatorii sunt semnul exclamării și semnul întrebării. În mod implicit, clasa
StringTokenizer stabilește ca delimitator caracterele "\t\n\r" care corespund unui spațiu de
tabulare, unui caracter de linie nouă și unui caracter retur de car.
 returnSimbol stabilește dacă delimitatorul va fi sau nu returnat. Pentru valoarea true
acesta va fi luat în calcul la afișarea valorii , adică vom obține numărul de cuvinte plus numărul
de delimitatori. Implicit, metoda nu returnează delimitatorul ca simbol.

opreavictoria86@gmail.com © MUSTEAȚĂ Victoria


6
Tehnologii Avansate de Programare , Limbajul Java, 2019 CEITI
Pentru a crea un șir de caractere StringTokenizer puteți utiliza sintaxa:
StringTokenizer numeString = new StringTokenizer(" valoare ");
De exemplu: StringTokenizer zi = new StringTokenizer (”Luni”);
Metode:
a. int countTokens() – va returna numărul de cuvinte dintr-un string.
De exemplu:
StringTokenizer st = new StringTokenizer("Programam in limbajul Java");
System.out.println(st.countTokens()); //4

StringTokenizer st1 = new StringTokenizer("Programam in,limbajul Java",",");


System.out.println(st1.countTokens()); //2

StringTokenizer st2 = new StringTokenizer("Programam in,limbajul,


Java",",",true);
System.out.println(st2.countTokens()); //5
b. boolean hasMoreTokens() – va returna true dacă în string
este măcar un cuvânt;
c. String nextToken() – returnează următorul cuvânt din
string.
De exemplu:
StringTokenizer st = new StringTokenizer("Programam in Java");
System.out.println("Total cuvinte : " + st.countTokens());
while (st.hasMoreTokens())
{
System.out.println("urmatorul cuvint : " + st.nextToken());
}
d. String nextToken(String delim) – returnează următorul
șir de caractere până la delimitatorul specificat în parametrul
delim. Dacă o veți folosi în cadrul unei structuri repetitive va afișa
string-urile ce se află între delimitatoare.
De exemplu:
StringTokenizer st = new StringTokenizer("Programam in ,Java, si ne place");
while (st.hasMoreTokens()){
System.out.println("next word:" + st.nextToken(","));
}

Care sunt metodele interfeței CharSequence


Definiție:
public interface CharSequence
Descriere:
Interfața CharSequence aparține bibliotecii java.lang. Conține metode comune de lucru a
claselor destinate prelucrării șirurilor de caractere. Conține 4 metode: char charAt(int
index), int length(), CharSequence subSequence(int start, int end),
String toString().

opreavictoria86@gmail.com © MUSTEAȚĂ Victoria


7
Tehnologii Avansate de Programare , Limbajul Java, 2019 CEITI
Întrebări și exerciții
1. Analizați porțiunile de cod propuse și argumentați rezultatul execuției:
1 System.out.println(1 + 2);
System.out.println("x" + "y");
System.out.println("a" + "b" + 3);
System.out.println(1 + 2 + "c");
2 int my = 4;
String v2 = "ABC";
String v = my + 1;
System.out.println(v + " " + v2);
System.out.println(my + " " + 1);
3 String s = "ABCD";
s.toUpperCase();
s.trim();
s.substring(1, 3);
s += " two";
System.out.println(s.length());
4 String s = "ABC";
String t = new String(s);
if ("ABC".equals(s)) System.out.println("A");
if (t == s) System.out.println("B");
if (t.equals(s)) System.out.println("C");
if ("ABC" == s) System.out.println("D");
5 String letters = "abcdef";
System.out.println(letters.length());
System.out.println(letters.charAt(3));
System.out.println(letters.charAt(6));
6 String numbers = "012345678";
System.out.println(numbers.substring(1, 3));
System.out.println(numbers.substring(7, 7));
System.out.println(numbers.substring(7))
7 public class Main {
public void AAA(String v1, StringBuilder v2) {
v1.concat(".");
v2.append(".");
}
public static void main(String[] args) {
String v1 = "AAA";
StringBuilder v2 = new StringBuilder("AAA");
new Main().AAA(v1, v2);
System.out.println(v1 + " " + v2);
}}
8 StringBuilder b = "ABCDEF";
b.append(4).deleteCharAt(3).delete(3, b.length() - 1);
System.out.println(b);
2. Descrieți în caiete clasa StringBuilder (declarare, descriere, constructori, metode, exemple).

Surse:
1. https://docs.oracle.com/javase/7/docs/api/index.html?java/lang/String.html
2. https://docs.oracle.com/javase/7/docs/api/java/lang/StringBuffer.html
3. https://docs.oracle.com/javase/7/docs/api/java/util/StringTokenizer.html
4. https://docs.oracle.com/javase/7/docs/api/java/lang/CharSequence.html
5. http://www.java2s.com/
opreavictoria86@gmail.com © MUSTEAȚĂ Victoria
8

S-ar putea să vă placă și