Documente Academic
Documente Profesional
Documente Cultură
Taskuri
1. Siruri de caractere
Sirurile de caractere in Java sunt manipulate, printre alte metode, cu ajutorul claselor String si
StringBuffer.
Exemplu:
String s = "abc";
String s = new String("abc");
char data[] = {’a’, ’b’, ’c’};
String s = new String(data);
1
Un şir de caractere constant va fi declarat de tipul String, altfel va fi declarat de tip
StringBuffer. StringBuffer pune la dispoziţie metode pentru modificarea conţinutului şirului,
cum ar fi: append, insert, delete, reverse.
Cea mai folosită modalitate de a lucra cu şiruri este prin intermediul clasei String.
Clasa StringBuffer va fi utilizată predominant în aplicaţii dedicate procesării textelor cum ar
fi editoarele de texte.
Concatenarea: +
Java este extrem de flexibil, permite concatenarea şirurilor cu obiecte de orice tip care au o
reprezentare de tip şir de caractere.
Exemple:
2
System.out.println("str4 == str5 : "+(str4 == str5));
System.out.println("str1 == str4 : "+(str1 == str4));
System.out.println("str1 == str5 : "+(str1 == str5));
System.out.println("str1.equals(str2) : "+str1.equals(str2));
System.out.println("str2.equals(str3) : "+str2.equals(str3));
System.out.println("str3.equals(str1) : "+str3.equals(str1));
System.out.println("str4.equals(str5) : "+str4.equals(str5));
System.out.println("str1.equals(str4) : "+str1.equals(str4));
System.out.println("str1.equals(str5) : "+str1.equals(str5));
}
}
2. Clasa String
Toate sirurile in limbajul Java sunt obiecte ale clasei String. Obiectele din aceasta clasa sunt
constante, adica sirurile continute in ele nu pot fi modificate. Daca este necesar sa se
foloseasca siruri modificabile, se recurge la clasa StringBuffer.
In afara de metodele pe care le ofera, clasa String contine si suportul necesar pentru
operatorul de concatenare'+'. Prin concatenarea a doua siruri se obtine un nou sir,
rezultat din punerea celor doua unul in continuarea celuilalt. De exemplu, expresia
"ABC"+"defg" are ca valoare sirul "ABCdefg".
Construirea unui obiect din clasa sir se face cel mai frecvent cu constructorul
String(String s). Acest constructor creaza in memorie o copie a sirului s primit ca
argument.
Compara acest sir cu sirul anotherString primit ca argument. Daca cele doua siruri sunt
identice, intoarce 0 (zero). Daca acest sir il precede, intoarce o valoare negativa, iar daca ii
3
succede, intoarce o valoare pozitiva. Compararea sirurilor se face in ordine lexicografica (in
ordinea in care ar fi plasate intr-un dictionar).
Compara lexicografic acest sir cu sirul str primit ca argument, ignorand deosebirea dintre
literele majuscule si cele minuscule.
int length()
String trim()
Intoarce un nou sir, obtinut din acest sir prin eliminarea spatiilor de la inceput si de la sfarsit.
Intoarce un nou sir, care contine caracterele acestui sir incepand de la pozitia
beginIndex, pana la sfarsit.
class TestStr {
char ch1[];
byte tb[];
System.out.println("s1="+s1+" s2="+s2);
4
" s2="+s2.length());
" s2="+s2.toUpperCase());
" s2="+s2.toLowerCase());
ch1=s1.toCharArray();
tb=s1.getBytes();
System.out.println();
s3=String.copyValueOf(ch1);
s1.compareTo(s2)+" "+s2.compareTo(s1));
s1.equals(s3));
s4=s2.toUpperCase();
System.out.println("s2="+s2+" s4="+s4);
System.out.println("s2.equals(s4): "+s2.equals(s4)+
5
System.out.println("Subsirul lui s2 intre pozitiile 3 si 8: "+
s2.substring(3,8));
s2.substring(3));
3. Clasa StringBuffer
Exista de fapt o familie de metode append() care difera intre ele prin tipul argumentului:
append(boolean b), append(byte b), append(short s), append(int
i), append(long l), append(char c), append(float f),
append(double d),append(String str), append(Object obj).
Toate aceste metode adauga in coada zonei tampon argumentul lor convertit intr-un sir.
Exista, de asemenea, o familie de metode insert(), care difera prin tipul celui de al doilea
argument:
insert(int offset, boolean b), insert(int offset, byte b),
insert(int offset, short s), insert(int offset, int i),
insert, int offset, long l), insert(int offset, char c),
insert(int offset, float f), insert(int offset, double d),
insert(int offset, String str), insert(int offset, Object obj).
Toate aceste metode insereaza in zona tampon, pe pozitia offset, cel de al doilea argument
convertit in sir.
class TestStrB {
public static void main(String args[]) {
StringBuffer stb1=new StringBuffer(), stb2;
String str1="abcdefg", str2;
double d=3.670283105E-3;
char tc1[]={'A','B','C'}, tc2[]=new char[10];
System.out.println("Lungimea si capacitatea initiala a stb1: "+
stb1.length()+" "+stb1.capacity());
stb1.append(str1);
stb1.append(d);
System.out.println("stb1="+stb1+"\nLungime: "+stb1.length()+
" Capacitate: "+stb1.capacity());
7
str2=stb1.toString(); // Este obligatorie folosirea metodei toString()
System.out.println("Caracterul de indice 3: "+stb1.charAt(3));
stb2=stb1.insert(3, "PQRS");
System.out.println("Dupa insertia sirului PQRS:\nstb1="+stb1+
"\nstb2="+stb2);
stb1.append(tc1);
System.out.println("Dupa adaugarea tabloului tc1, stb1="+stb1);
System.out.println("Lungime: "+stb1.length()+" Capacitate: "+
stb1.capacity());
stb1.delete(3,25);
System.out.println("Dupa eliminarea zonei 3..25: "+stb1);
System.out.println("Lungime: "+stb1.length()+" Capacitate: "+
stb1.capacity());
stb1.reverse();
System.out.println("Dupa inversare stb1="+stb1);
stb1.getChars(1,4,tc2,3);
System.out.println("Dupa extragerea de caractere, lungimea "+
"tabloului tc2: "+tc2.length);
System.out.print("tc2=");
for(int i=0; i<tc2.length; i++) System.out.print(tc2[i]);
System.out.println();
}
}
4. Taskuri