Cuvinte importante: - PowerPoint PPT Presentation

1 / 56
About This Presentation
Title:

Cuvinte importante:

Description:

Title: PowerPoint Presentation Author: IBM Last modified by: mariana Created Date: 10/20/2006 4:11:32 AM Document presentation format: On-screen Show – PowerPoint PPT presentation

Number of Views:128
Avg rating:3.0/5.0
Slides: 57
Provided by: IBM7234
Category:

less

Transcript and Presenter's Notes

Title: Cuvinte importante:


1
Cuvinte importante -siruri de caractere
(String-uri) reguli de folosire crearea de noi
obiecte de tip String folosind constructorii
clasei String - concatenarea sirurilor de
caractere compararea sirurilor de caractere
metode folosite - extragerea de caractere sau
subsiruri dintr-un sir cautarea unor aparitii de
subsiruri intr-un sir metode folosite -
inlocuirea aparitiilor unui caracter sau unui
subsir dintr-un sir cu un alt caracter sau
subsir eliminarea caracterelor albe de la
inceputul si sfarsitul unui sir de caractere
metode folosite - clase înfasuratoare pentru
tipurile primitive de date conversii intre
siruri de caractere (String) si alte tipuri de
date primitive metode folosite - folosirea
clasei Math pentru calcule matematice -
separarea elementelor lexicale (tokens)
distincte din cadrul unui sir de caractere clasa
StringTokenizer metode folosite.
2
Siruri de caractere (String-uri) Sirurile de
caractere in Java sunt definite folosind clasa
String. Limbajul Java face sa para ca String
este un tip primitiv, deoarece pentru el sunt
definiti operatorii si pentru
concatenare,desi, stim, din lectia 2, ca
operatorii, in general, nu pot fi aplicati
obiectelor. Totusi, String este singurul tip
referinta pentru care Java a permis
supraincarcarea operatorilor. Reguli
fundamentale privind obiectele de tip String 1.
Obiectele de tip String se comporta ca orice alt
obiect Java, exceptand faptul ca asupra lor se
poate aplica operatorul de concatenare 2.
Obiectele de tip String sunt nemodificabile (sunt
constante), in sensul ca, daca doua variabile
referinta indica acelasi sir de caractere,
modificarea valorii sirului de caractere catre
care refera una din variabile nu va avea nici un
efect asupra valorii sirului de caractere pe care
o refera cealalta variabila. Aceasta inseamna
ca, odata construit un obiect de tip String nu
mai poate fi modificat. Din aceasta motivatie
operatorul de atribuire se foloseste pentru
String-uri la fel ca pentru un tip de data
primitiv, adica creaza un nou String.
3
De exemplu String mesaj1 Java String mesaj2
NetBeans String mesaj2_repet mesaj2 Dupa
aceste atribuiri exista doua obiecte de tip
String - sirul Java, referit de variabila
mesaj1 si - sirul NetBeans referit de
variabilele mesaj 2 si mesaj2_repet. Deoarece
string-urile sunt obiecte care nu pot fi
modificate, singura posibilitate de a modifica
valoarea catre care refera variabila mesaj2_repet
este aceea de a construi un nou obiect de tip
String si de a-l atribui variabilei mesaj2_repet.
Aceasta operatie nu va avea nici un efect asupra
valorii pe care o refera mesaj2.
4
Crearea de noi obiecte de tip String folosind
constructorii clasei String Clasa String se afla
in pachetul java.lang si are definiti mai multi
constructori pentru crearea si initializarea de
obiecte de tip String. Vom descrie cativa dintre
constructorii clasei String, mai des folositi. 1.
Constructor utilizat pentru alocarea unui nou
String care contine o secventa de caractere
stocata intr-un tablou unidimensional de
caractere. Antetul constructorului este public
String(char ltvaloaregt) unde - ltvaloaregt -
tabloul de caractere care reprezinta sursa
secventei de caractere a noului String. De
retinut este faptul ca, modificarea tabloului de
caractere nu afecteaza noul sir de caractere
creat astfel. De exemplu char caractere1
a, b, c, d, e, f String sir1 new
String(caractere1)
5
2. Constructor utilizat pentru alocarea unui nou
String care contine o secventa de caractere
stocata intr-o portiune a unui tablou
unidimensional de caractere. Antetul
constructorului este public String(char ltvaloar
egt, int ltdeplasamentgt, int ltlungimeSecventagt)
unde - ltvaloaregt - tabloul de caractere care
reprezinta sursa secventei de caractere a noului
String - ltdeplasamentgt - indexul primului
caracter din tabloul de caractere de la care se
va incepe initializarea noului String -
ltlungimeSecventagt - lungimea secventei de
caractere preluata din tabloul de caractere
pentru initializarea noului String. De retinut
este faptul ca, modificarea subtabloului de
caractere preluat nu afecteaza noul sir de
caractere creat astfel. De exemplu char
caractere1 a, b, c, d, e,
f String sir1 new String(caractere1, 0, 3)
6
3. Constructor utilizat pentru alocarea unui nou
String care contine aceeasi secventa de caractere
care este stocata intr-un alt sir. Cu alte
cuvinte, noul sir creat este o copie a unui alt
sir. De regula, se foloseste pentru a crea
duplicatul unui sir. Antetul constructorului
este public String(String ltsirOriginalgt)
unde - ltsirOriginalgt - sirul care este copiat
in noul sir creat. De exemplu char caractere1
a, b, c, d, e, f String sir1
new String(caractere1) String sir2 new
String(sir1)
7
Concatenarea sirurilor de caractere Atunci cand
cel putin unul dintre operanzi este de tip
String, operatorul plus () realizeaza
concatenarea. Rezultatul este o referinta catre
un obiect nou construit de tip String. Exemple 1.
sir1_concatenat x y z //
sir1_concatenat are valoarea xyz 2. sir2_concate
nat Ana are 5 ani /
sir2_concatenat are valoarea Ana are 5 ani,
cifra 5 este convertita la String / Observatie
String-urile formate dintr-un singur caracter nu
trebuie confundate si nici inlocuite cu
constantele de tip char (care sunt de fapt
numere). Operatorul este, de asemenea, folosit
pentru concatenarea sirurilor. Efectul
instructiunii sir1 sir2 este acelasi cu
sir1 sir1 sir2 Deci, sir1 va referi un nou
obiect de tip String a carui valoare este sir1
sir2.
8
Metoda concat poate fi folosita, de asemenea,
pentru concatenarea a doua siruri. Antetul
metodei este public String concat(String ltsirConc
atgt) unde - ltsirConcatgt - sirul care se
concateneaza la sfarsitul sirului curent. Metoda
concat returneaza un nou sir de caractere care
este format din sirul de caractere curent urmat
de sirul de caractere specificat in parametrul
ltsirConcatgt. Daca lungimea sirului specificat in
parametru ltsirConcatgt este 0, atunci se
returneaza sirul curent. De exemplu String nume
Ionescu String prenume Ion String
numePrenume nume.concat(prenume) //
returneaza Ionescu Ion sau String sirNou la
.concat(Ionescu ).concat(Ion) // returneaza
la Ionescu Ion
9
Compararea sirurilor de caractere Operatorii
relationali (lt, lt, gt, gt) nu functioneaza pentru
obiecte de tip String. De asemenea, operatorii
de egalitate si inegalitate (, !) pentru
siruri de caractere au semnificatia precizata la
obiecte de tip referinta, adica compara adrese
(referinte catre obiecte de tip String) si nu
valorile continute de obiectele de tip String. A.
Pentru a testa egalitatea (identitatea) a doua
obiecte de tip String, se foloseste metoda
equals. Antetul metodei este public boolean
equals(Object ltunObiectgt) unde - ltunObiectgt -
reprezinta un obiect de tip String cu a carui
valoare se compara sirul curent. Metoda equals
returneaza valoarea true daca si numai daca
parametrul unObiect nu este null si este un
obiect de tip String care are ca valoare aceeasi
secventa de caractere ca si a sirului curent.
10
De exemplu, urmatoarea secventa de cod
(EqualsSiruri.java) arata modul de apel al
metodei equals pentru compararea continutului a
doua siruri de caractere, introduse de la
tastatura import java.io. class
EqualsSiruri public static void main(String
args) throws IOException char caractere1
new char20 char caractere2 new
char20 for (int i0 i lt19
i) caractere1i ' ' for ( int i0 i
lt19 i) caractere2i ' ' BufferedReader
br new BufferedReader(new InputStreamReader(Sys
tem.in)) System.out.println ("Introduceti
primul sir") br.read(caractere1, 0,
20) String sir1 new String(caractere1) Syste
m.out.println ("Introduceti al doilea
sir") br.read(caractere2, 0, 20) String sir2
new String(caractere2)
11
boolean rezultat false rezultat
sir1.equals(sir2) if (rezultat
true) System.out.println ("siruri
egale") else System.out.println ("siruri
diferite") Nota Vom face cateva
consideratii asupra folosirii metodei read din
clasa BufferedReader, definita in pachetul
java.io.Reader. Aceasta metoda a fost folosita in
exemplul de mai sus. Antetul metodei read
este public int read(char ltcbufgt,
int ltdeplasamentgt, int ltlungimegt) unde - ltcbufgt
- tablou de caractere unde se face stocarea
secventei de caractere citita din buffer-ul
fluxului de intrare - ltdeplasamentgt - indexul
din tabloul de caractere ltcbufgt de la care va
incepe stocarea - ltlungimegt - numarul maxim de
caractere care se doresc a fi citite si depuse in
tabloul de caractere dat de parametrul ltcbufgt.
12
Metoda read citeste un numar de caractere, dat de
parametrul ltlungimegt, din buffer-ul de intrare si
stocheaza aceste caractere citite intr-o portiune
a unui tablou unidimensional de caractere dat de
parametrul ltcbufgt. Atunci cand se foloseste
metoda read pentru citirea unui flux de intrare
cu tampon (buffer) de la tastatura (System.in)
este indicat ca valoarea din parametrul ltlungimegt
sa fie mai mare decat lungimea secventei de
caractere citita de la tastatura. Altfel, trebuie
reapelata metoda read pentru a prelua si restul
caracterelor citite din buffer-ul (zona de
memorie tampon) de intrare. Sa retinem ca, la
citirea de la tastatura prin apelul metodei read
sunt preluate in tabloul de caractere dat de
parametrul ltcbufgt si caracterele \r (cod ASCII
-13) si \n (cod ASCII - 10). In functie de
necesitati uneori este necesar ca aceste 2
caractere sa fie eliminate din tabloul de
caractere ltcbufgt.
13
Metoda equalsIgnoreCase este folosita pentru a
testa egalitatea a doua obiecte de tip String
fara a face distinctie intre literele mici si
literele mari ale alfabetului. Antetul metodei
este public boolean equalsIgnoreCase(String ltaltS
irgt) unde - ltaltSirgt - un alt obiect de tip
String cu care se face comparatia sirului
curent. Metoda equalsIgnoreCase returneaza
valoarea true daca parametrul ltaltSirgt nu este
null si daca cele doua siruri de caractere au
aceeasi lungime si sunt formate din aceeasi
secventa de caractere, fara a se face distinctie
intre literele mari si mici ale alfabetului. De
exemplu boolean rezultat false rezultat
sir1.equalsIgnoreCase(sir2)
14
B. Metoda compareTo este folosita pentru a
realiza un test mai general intre doua siruri din
punct de vedere al ordinii lexicografice.
Compararea a doua siruri de caractere se bazeaza
pe valoarea Unicode a fiecarui caracter din
sirurile de caractere. Antetul metodei
este public int compareTo(String ltaltSirgt)
unde - ltaltSirgt - un alt obiect de tip String
cu care se face comparatia sirului curent. Metoda
compareTo returneaza - o valoare intreaga mai
mica decat 0 daca sirul curent este mai mic, din
punct de vedere al ordinii lexicografice, decat
sirul de caractere din parametrul ltaltSirgt -
valoarea 0 daca sirul curent este egal, din punct
de vedere al ordinii lexicografice, cu sirul de
caractere din parametrul ltaltSirgt - o valoare
intreaga mai mare decat 0 daca sirul curent este
mai mare, din punct de vedere al ordinii
lexicografice, decat sirul de caractere din
parametrul ltaltSirgt. De exemplu int rezultat
sir1.compareTo(sir2)
15
C. Metoda compareToIgnoreCase este folosita
pentru a compara doua siruri de caractere, din
punct de vedere al ordinii lexicografice, fara a
face distinctie intre literele mici si mari ale
alfabetului. Antetul metodei este public int
compareToIgnoreCase(String ltaltSirgt) unde -
ltaltSirgt - un alt obiect de tip String cu care se
face comparatia sirului curent. Metoda
compareToIgnoreCase returneaza - o valoare
intreaga mai mica decat 0 daca sirul curent este
mai mic, din punct de vedere al ordinii
lexicografice, decat sirul de caractere din
parametrul ltaltSirgt - valoarea 0 daca sirul
curent este egal, din punct de vedere al ordinii
lexicografice, cu sirul de caractere din
parametrul ltaltSirgt - o valoare intreaga mai
mare decat 0 daca sirul curent este mai mare, din
punct de vedere al ordinii lexicografice, decat
sirul de caractere din parametrul ltaltSirgt. De
exemplu int rezultat sir1.compareToIgnoreCase(s
ir2)
16
Determinarea lungimii sirurilor de
caractere Lungimea unui obiect de tip String (un
sir vid are lungimea 0) poate fi obtinuta cu
metoda length(), care returneaza numarul de
caractere, de tip Unicode, din sir. Extragerea
unui caracter dintr-un sir de caractere Metoda
charAt este folosita pentru a extrage un caracter
aflat la o anumita pozitie intr-un sir de
caractere. Precizam ca, primul caracter dintr-un
sir se afla pe pozitia 0. Antetul metodei
este public char charAt(int ltindexgt) unde -
ltindexgt - pozitia caracterului in sir, intre 0 si
length() - 1. Metoda charAt returneaza o valoare
de tip char care reprezinta caracterul aflat la
pozitia specificata de parametrul ltindexgt in
sir. De exemplu String mesaj un
nefericit int lungimeSir mesaj.length() //
lungimeSir are valoarea 12 char carExtras
mesaj.charAt(3) // carExtras are valoarea n
17
Extragerea unui subsir dintr-un sir de
caractere Metoda substring este folosita pentru a
construi un nou sir de caractere obtinut prin
extragerea unui subsir dintr-un sir de caractere.
Exista doua variante ale acestei metode. Antetul
metodei substring in prima varianta este public
String substring(int ltindexInceputgt) unde -
ltindexInceputgt - pozitia in sirul de caractere de
la care incepe extragerea subsirului. Metoda
substring returneaza un nou sir format dintr-un
subsir al vechiul sir. Subsirul incepe cu
caracterul aflat pe pozitia specificata in
parametrul ltindexInceputgt si se extinde pana la
sfarsitul vechiului sir. Antetul metodei
substring in a doua varianta este public String
substring(int ltindexInceputgt, int ltindexSfarsitgt)
unde - ltindexInceputgt - pozitia in sirul de
caractere de la care incepe extragerea
subsirului - ltindexSfarsitgt - pozitia in sirul
de caractere pana la care se face extragerea
(caracterul de pe aceasta pozitie nu este inclus
in subsir)
18
Metoda substring in a doua varianta returneaza un
nou sir format dintr-un subsir al vechiul sir.
Subsirul incepe cu caracterul aflat pe pozitia
specificata in parametrul ltindexInceputgt si se
extinde pana la caracterul aflat pe pozitia
specificata in parametrul ltindexSfarsitgt -
1. Deci, lungimea noului sir creat este
ltindexSfarsitgt - ltindexInceputgt De
exemplu String sirVechi un nefericit String
sirNou sirVechi.substring(5) // sirNou are
valoarea fericit String sirNou1
sirVechi.substring(5, 9) //sirNou1 are
valoarea feri
19
Cautarea primei aparitii a unui sir intr-un alt
sir Metoda startsWith este folosita pentru a
cauta prima aparitie a unui sir in sirul
curent. Antetul metodei este public boolean
startsWith(String ltsirCautaregt) unde -
ltsirCautaregt - sirul de cautat in sirul
curent. Metoda startsWith returneaza valoarea
true, daca secventa de caractere din sirul
specificat de parametrul ltsirCautaregt este
aceeasi cu cea din sirul curent, si valoarea
false, altfel. Daca parametrul ltsirCautaregt este
sirul vid, metoda returneaza, de asemenea,
valoarea true.
20
Cautarea primei aparitii a unui sir intr-un alt
sir folosind o pozitie de inceput a cautarii
Metoda startsWith poate fi folosita si pentru a
cauta prima aparitie a unui sir in sirul curent
folosind o pozitie de inceput a cautarii in sirul
curent. Antetul metodei startsWith in a doua
varianta este public boolean startsWith(String lts
irCautaregt, int ltindexInceputCautaregt) unde -
ltsirCautaregt - sirul de cautat in sirul curent -
ltindexInceputCautaregt - indexul, in sirul curent,
de la care incepe cautarea. Metoda startsWith
returneaza valoarea true daca secventa de
caractere din sirul specificat de parametrul
ltsirCautaregt este aceeasi cu cea din sirul
curent, incepand de la pozitia specificata in
parametrul ltindexInceputCautaregt. Altfel, metoda
returneaza valoarea false. Rezultatul aplicarii
metodei, in acest caz, este acelasi cu cel al
expresiei ltsirCurentgt.substring(ltindexInceputCaut
aregt).startsWith(ltsirCautaregt) unde -
ltsirCurentgt specifica sirul curent in care se
face cautarea.
21
Determinarea pozitiei primei aparitii a unui sir
intr-un alt sir Metoda indexOf este folosita
pentru a determina pozitia de inceput, in sirul
curent, la care se afla prima aparitie a unui
sir. Antetul metodei este public int
indexOf(String ltsirCautaregt) unde -
ltsirCautaregt - sirul de cautat in sirul
curent. Metoda indexOf returneaza indexul, din
sirul curent, la care se afla prima aparitie a
sirului specificat in parametrul ltsirCautaregt,
daca secventa de caractere din sirul specificat
de parametrul ltsirCautaregt este aceeasi cu cea
din sirul curent, si valoarea -1, altfel.
22
Determinarea pozitiei primei aparitii a unui sir
intr-un alt sir folosind o pozitie de inceput a
cautarii Metoda indexOf poate fi folosita si
pentru a determina indexul primei aparitii a unui
sir in sirul curent folosind pozitia de inceput a
cautarii in sirul curent. Antetul metodei indexOf
in a doua varianta este public int indexOf
(String ltsirCautaregt, int ltindexInceputCautaregt)
unde - ltsirCautaregt - sirul de cautat in sirul
curent - ltindexInceputCautaregt - indexul, in
sirul curent, de la care incepe cautarea spre
sfarsitul sirului curent. Metoda indexOf
returneaza indexul, din sirul curent, incepand de
la pozitia specificata in parametrul
ltindexInceputCautaregt, la care se afla prima
aparitie a sirului specificat de parametrul
ltsirCautaregt.Altfel, metoda returneaza valoarea
-1. Rezultatul aplicarii metodei, in acest caz,
este acelasi cu cel al expresiei ltsirCurentgt.subs
tring(ltindexInceputCautaregt).indexOf(ltsirCautaregt)
unde - ltsirCurentgt specifica sirul curent in
care se face cautarea.
23
Cautarea ultimei aparitii a unui sir intr-un alt
sir Metoda endsWith este folosita pentru a cauta
ultima aparitie a unui sir in sirul
curent. Antetul metodei este public boolean
endsWith(String ltsirCautaregt) unde -
ltsirCautaregt - sirul de cautat in sirul
curent. Metoda endsWith returneaza valoarea true,
daca secventa de caractere din sirul specificat
de parametrul ltsirCautaregt este aceeasi cu cea
din sirul curent, si valoarea false, altfel. Daca
parametrul ltsirCautaregt este sirul vid, metoda
returneaza, de asemenea, valoarea true.
24
Determinarea pozitiei ultimei aparitii a unui sir
intr-un alt sir Metoda lastIndexOf este folosita
pentru a determina pozitia ultimei aparitii a
unui sir in sirul curent. Aceasta metoda se poate
aplica in doua variante. Antetul metodei in prima
varianata este public int lastIndexOf(String ltsir
Cautaregt) unde - ltsirCautaregt - sirul de
cautat in sirul curent. Metoda lastIndexOf
returneaza indexul, din sirul curent, la care se
afla ultima aparitie a sirului specificat in
parametrul ltsirCautaregt, daca secventa de
caractere din sirul specificat de parametrul
ltsirCautaregt este aceeasi cu cea din sirul
curent, si valoarea -1, altfel. Nota Sirul vid
() cel mai din dreapta este considerat ca apare
la indexul ltsirCurentgt.length().
25
Antetul metodei lastIndexOf in a doua varianata
este public int lastIndexOf (String ltsirCautaregt,
int ltindexInceputCautaregt) unde - ltsirCautaregt
- sirul de cautat in sirul curent -
ltindexInceputCautaregt - indexul, in sirul curent,
de la care incepe cautarea spre inceputul sirului
curent. Metoda lastIndexOf returneaza indexul,
din sirul curent, incepand de la pozitia
specificata in parametrul ltindexInceputCautaregt,
la care se afla ultima aparitie a sirului
specificat de parametrul ltsirCautaregt.Altfel,
metoda returneaza valoarea -1.
26
Inlocuirea aparitiilor unui caracter dintr-un sir
cu un alt caracter Metoda replace este folosita
pentru a construi un nou sir de caractere obtinut
prin inlocuirea aparitiilor unui caracter cu un
alt caracter, in sirul curent. Antetul metodei
este public String replace(char ltcaracterVechigt,
char ltcaracterNougt) unde - ltcaracterVechigt -
caracterul de inlocuit - ltcaracterNougt -
caracterul cu care se inlocuieste. Metoda replace
returneaza un sir nou de caractere construit cu
caracterele inlocuite, date de parametrul
ltcaracterNougt, daca caracterele specificate in
parametrul ltcaracterVechigt sunt gasite in sirul
curent sau returneaza un sir nou de caractere
care este identic cu cel initial, daca caracterul
specificat in parametrul ltcaracterVechigt nu apare
in sirul curent. De exemplu String sir1
Ionescu Ion String sir2 sir1.replace(I,
J) // sir2 va avea valoarea Jonescu Jon
27
Inlocuirea aparitiilor unei secvente de caractere
(subsir), dintr-un sir, cu o alta secventa de
caractere (subsir) Metoda replace este folosita
si pentru a construi un nou sir de caractere
obtinut prin inlocuirea aparitiilor unei secvente
de caractere cu o alta secventa de caractere, in
sirul curent. Antetul metodei replace in aceasta
varianta este public String replace(String ltsecve
ntaVechegt, String ltsecventaNouagt) -
ltSecventaVechegt - secventa de caractere de
inlocuit - ltsecventaNouagt - secventa de
caractere cu care se inlocuieste. Metoda replace,
in aceasta varianata, returneaza un sir nou de
caractere construit cu secventele de caractere
inlocuite, date de parametrul ltsecventaNouagt,
daca secventele de caractere specificate in
parametrul ltsecventaVechegt sunt gasite in sirul
curent sau returneaza un sir nou de caractere
care este identic cu cel initial, daca secventa
de caractere specificata in parametrul
ltSecventaVechegt nu apare in sirul curent.
28
Eliminarea caracterelor albe de la inceputul si
sfarsitul unui sir de caractere Metoda trim este
folosita pentru eliminarea caracterelor albe de
la inceputul si sfarsitul sirului de caractere
curent. Antetul metodei este public String
trim() Metoda trim() returneaza un nou sir de
caractere din care sunt eliminate caracterele
albe de la inceputul sau sfarsitul sirului
curent, daca acestea exita in sirul curent, sau
returneaza sirul curent, daca caracterele albe nu
exista in sir. Daca in sirul curent exista numai
caractere albe atunci sirul nou creat este sirul
vid (). Convertirea unui sir de caractere la un
tablou de caractere Metoda toCharArray
converteste un sir de caractere la un nou tablou
de caractere. Antetul metodei este public
char toCharArray() Metoda toCharArray aloca o
zona de memorie pentru un tablou de caractere al
carui continut este initializat cu secventa de
caractere reprezentata de sirul de caractere.
29
Urmatorul program (ReplaceSiruri.java) ilustreaza
modul de folosire a metodei replace in varianta
inlocuiri unui subsir de caractere cu un alt
subsir de caractere, citite de la tastatura,
intr-un sir de caractere, de asemenea citit de la
tastatura, a metodei trim pentru inlocuirea
caracterelor albe (\r si \n) dintr-o secventa
de caractere, precum si a metodei toCharArray
pentru convertirea sirului, din care s-au
eliminat caracterele albe, la un tablou de
caractere. De asemenea, programul arata si modul
de apelare a metodei length() pentru obtinerea
lungimii unui sir de caractere. import
java.io. class ReplaceSiruri public static
void main(String args) throws
IOException char caractere new
char20 for (int i0 i lt19
i) caracterei ' ' BufferedReader br1
new BufferedReader(new InputStreamReader(System.in
)) System.out.println ("Introduceti sirul supus
modificarii") br1.read(caractere, 0, 20) for
(int i 0i lt (caractere.length - 1)
i) System.out.print((int) caracterei " ")
System.out.println() String sirVechi new
String(caractere).trim() char caractereVechi
sirVechi.toCharArray() for (int i 0i lt
(caractereVechi.length - 1) i) System.out.pri
nt((int) caractereVechii " ")
System.out.println()
30
for (int i0 i lt19 i) caracterei '
' BufferedReader br2 new BufferedReader(new
InputStreamReader(System.in)) System.out.println
("Introduceti secventa de caractere de
inlocuit") br2.read(caractere, 0, 20) String
subsirVechi new String(caractere).trim() char
caractereSubsirVechi subsirVechi.toCharArray
() for (int i 0i lt (caractereSubsirVechi.len
gth - 1) i) System.out.print((int)
caractereSubsirVechii " ") System.out.print
ln() for (int i0 i lt19 i) caracterei
' ' BufferedReader br3 new
BufferedReader(new InputStreamReader(System.in))
System.out.println ("Introduceti secventa de
caractere cu care se face inlocuirea") br3.read
(caractere, 0, 20) String subsirNou new
String(caractere).trim() char
caractereSubsirNou subsirNou.toCharArray() fo
r (int i 0i lt (caractereSubsirNou.length -
1) i) System.out.print((int)
caractereSubsirNoui " ") System.out.println
() String sirNou sirVechi.replace(subsirVechi,
subsirNou) System.out.println("Lungimea noului
sir este" sirNou.length()) System.out.println
("Sirul nou este " sirNou)
31
Dupa executia programului pe ecran se afiseaza
urmatoarele rezultate Introduceti sirul supus
modificarii Ionescu Ion 73 111 110 101 115 99
117 32 73 111 110 13 10 32 32 32 32 32 32 32 73
111 110 101 115 99 117 32 73 111 110 Introduceti
secventa de caractere de inlocuit Io 73
111 Introduceti secventa de caractere cu care se
face inlocuirea Mari 77 97 114 105 Lungimea
noului sir este15 Sirul nou este Marinescu Marin
32
Convertirea unui caracter la un sir de
caractere Metoda valueOf converteste un caracter
la un sir de caractere. Antetul metodei
este public static String valueOf(char ltcgt) unde
- ltcgt - un caracter. Metoda valueOf returneaza
un sir de caractere cu lungimea de 1 continand un
singur caracter dat de parametrul
ltcgt. Convertirea unui tablou de caractere la un
sir de caractere Metoda valueOf poate fi folosita
si pentru conversia unui tablou de caractere la
un sir de caractere. Antetul metodei
este public static String valueOf(char 
lttablouCaracteregt) Metoda valueOf returneaza un
nou sir de caractere in care este copiat
continutul tabloului de caractere. Modificari
ulterioare ale tabloului de caractere nu
afecteaza continutul noului sir de caractere
creat.
33
Convertirea, in sirul de caractere, a literelor
mari in litere mici Metoda toLowerCase este
folosita pentru a transforma literele mari in
litere mici, in sirul curent. Antetul metodei
este public String toLowerCase() Convertirea,
in sirul de caractere, a literelor mici in litere
mari Metoda toUpperCase este folosita pentru a
transforma literele mici in litere mari, in sirul
curent. Antetul metodei este public String
toUpperCase()
34
Clase înfasuratoare pentru tipurile primitive de
date Pachetul Java.lang contine clase de obiecte
care corespund fiecarui tip de date primitive,
astfel - clasa Byte este folosita pentru a crea
obiecte care sa retina valori de tip byte -
clasa Short este folosita pentru a crea obiecte
care sa retina valori de tip short - clasa
Integer este folosita pentru a crea obiecte care
sa retina valori de tip int - clasa Long este
folosita pentru a crea obiecte care sa retina
valori de tip long - clasa Float este folosita
pentru a crea obiecte care sa retina valori de
tip float - clasa Double este folosita pentru a
crea obiecte care sa retina valori de tip
double - clasa Character este folosita pentru a
crea obiecte care sa retina valori de tip char -
clasa Boolean este folosita pentru a crea obiecte
care sa retina valori de tip boolean. Totusi,
clasele înfasuratoare sunt interpretate diferit
fata de tipurile primitive corespondente si de
aceea ele nu pot fi folosite în locul tipurilor
primitive si nici invers.
35
Un obiect al oricarei clase infasutatoare
mentionata mai sus contine un singur câmp al
carui tip este tipul primitiv corespondent.
Pentru a crea un obiect de un tip ca Byte,
Short, Integer, Long, Float, Double, Character,
Boolean, se foloseste operatorul new si un
constructor corespunzator. Exemple Integer
numarInt new Integer(44) Double x new
Double(-44.23) Character c new
Character(a) Boolean adevar new
Boolean(true) La fel se procedeaza si pentru
celelalte clase de obiecte care corespund
tipurilor primitive. Obiectele astfel create se
poate folosi ca oricare alte obiecte,
beneficiind, în acelasi timp si de toate metodele
claselor respective.
36
Conversia de la un tip dat de clasele
înfasuratoare la un tip de data primitiv Pentru
a folosi valoarea dintr-un obiect de un tip
Byte, Short, Integer, Long, Float, Double,
Character, Boolean, ca valoare de tip primitiv
corespunzatoare, se pot apela metode adecvate ale
acestor clase. În acest sens, mentionam câteva
metode des folosite byte byteValue() - pentru
valori de tip byte short shortValue() - pentru
valori de tip short int intValue() - pentru
valori de tip int long longValue() - pentru
valori de tip long float floatValue() - pentru
valori de tip float double doubleValue() -
pentru valori de tip double char charValue() -
pentru valori de tip char boolen booleanValue()
- pentru valori booleene De exemplu, pentru a
extrage o valoare int retinuta de obiectul
numarInt, creat mai sus, se foloseste urmatoarea
instructiune int numar numarInt.intValue()
// returneaza valoarea 44.
37
Conversia de la tipurile primitive de date
numerice la tipul String si invers Tipul de data
byte poate fi reprezentat in Java ca un obiect
din clasa Byte (din pachetul java.lang). Un
obiect de tip Byte contine un singur camp al
carui tip este byte. A. Pentru conversia de la
tipul de data byte la tipul de data String se
poate folosi metoda toString a clasei de obiecte
Byte. Antetul metodei este public static String
toString(byte ltbgt) Metoda returneaza un nou sir
de caractere continand valoarea precizata in
parametrul ltbgt. Baza de numeratie folosita este
10. B. Pentru conversia de la tipul de data
String la tipul de data byte se poate folosi
metoda parseByte a clasei de obiecte
Byte. Antetul metodei este public static byte
parseByte(String ltsirgt) Metoda returneaza
reprezentarea de tipul byte, in baza 10, a
continutului sirului de caractere din parametrul
ltsirgt. Aceasta metoda genereaza o exceptie
(eroare) daca String-ul de convertit nu contine o
valoare de tip byte.
38
Metoda parseByte poate fi folosita si pentru
conversia unui sir de caractere intr-o valoare de
tip byte intr-o baza de numeratie
specificata. Antetul metodei, in aceasta forma,
este public static byte parseByte(String ltsirgt,
int ltbazagt) De exemplu String s1
Byte.toString(45) byte x Byte.parseByte(75)
Tipul de data Short poate fi reprezentat in Java
ca un obiect din clasa Short (din pachetul
java.lang). Un obiect de tip Short contine un
singur camp al carui tip este short. A. Pentru
conversia de la tipul de data short la tipul de
data String se poate folosi metoda toString a
clasei de obiecte Short. Antetul metodei
este public static String toString(short ltsgt)
Metoda returneaza un nou sir de caractere
continand valoarea precizata in parametrul ltsgt.
Baza de numeratie folosita este 10.
39
B. Pentru conversia de la tipul de data String la
tipul de data short se poate folosi metoda
parseShort a clasei de obiecte Short. Antetul
metodei este public static short
parseShort(String ltsirgt) Metoda returneaza
reprezentarea de tipul short, in baza 10, a
continutului sirului de caractere din parametrul
ltsirgt. Aceasta metoda genereaza o exceptie
(eroare) daca String-ul de convertit nu contine o
valoare de tip short. Metoda parseShort poate fi
folosita si pentru conversia unui sir de
caractere intr-o valoare de tip short, intr-o
baza de numeratie specificata. Antetul metodei,
in aceasta forma, este public static short
parseShort(String ltsirgt, int ltbazagt) De
exemplu String s1 Short.toString(100) // si
contine valoarea 100 short x
Short.parseShort(75, 2) // x contine valoarea
75 in baza 2
40
Tipul de data int poate fi reprezentat in Java ca
un obiect din clasa Integer (din pachetul
java.lang). Un obiect de tip Integer contine un
singur camp al carui tip este int. A. Pentru
conversia de la tipul de data int la tipul de
data String se poate folosi metoda toString a
clasei de obiecte Integer. Antetul metodei
este public static String toString(int ltigt)
Metoda returneaza un nou sir de caractere
continand valoarea precizata de parametrul ltigt.
Baza de numeratie folosita este 10. Metoda
toString pentru numere de tip int poate fi
folosita si sub forma public static String
toString(int ltigt, int ltbazagt) In acest caz,
metoda returneaza un nou sir de caractere
continand valoarea precizata de parametrul ltigt,
in baza de numeratie specificata in parametrul
ltbazagt. De exemplu String s1
Integer.toString(20,2)) //s1 contine
reprezentarea in baza 2 a numarului 20 sub
forma de sir de caractere
41
B. Pentru conversia de la tipul de data String la
tipul de data int se poate folosi metoda parseInt
a clasei de obiecte Integer. Antetul metodei
este public static int parseInt(String ltsirgt)
Metoda returneaza reprezentarea de tipul int, in
baza 10, a continutului sirului de caractere din
parametrul ltsirgt. Aceasta metoda genereaza o
exceptie (eroare) daca String-ul de convertit nu
contine o valoare de tip int. Metoda parseInt
poate fi folosita si pentru conversia unui sir de
caractere intr-o valoare de tip int, intr-o baza
de numeratie specificata. Antetul metodei, in
aceasta forma, este public static int
parseInt(String ltsirgt, int ltbazagt) Urmatorul
program (ParseIntSiruri.java) arata cum se face
conversia unui sir de caractere (String) intr-un
numar de tip intreg (int) prin folosirea metodei
Integer.parseInt.
42
import java.io. class ParseIntSiruri public
static void main(String args) throws
IOException char caractere new
char20 for (int i0 i lt19
i) caracterei ' ' BufferedReader br1
new BufferedReader(new InputStreamReader(System.in
)) System.out.println ("Introduceti primul
numar") br1.read(caractere, 0, 20) String
sir1 new String(caractere).trim() int x
Integer.parseInt(sir1) System.out.println("Sirul
transformat in numar este" x) for (int i0
i lt19 i) caracterei '
' System.out.println ("Introduceti al doilea
numar") BufferedReader br2 new
BufferedReader(new InputStreamReader(System.in))
br2.read(caractere, 0, 20) String sir2 new
String(caractere).trim() int y
Integer.parseInt(sir2) System.out.println("Sirul
transformat in numar este" y) int z
xy System.out.println("Suma numerelor este"
z)
43
Dupa executia programului pe ecran se afiseaza
urmatoarele rezultate Introduceti primul
numar 123 Sirul transformat in numar
este123 Introduceti al doilea numar 23 Sirul
transformat in numar este23 Suma numerelor
este146 Tipul de data long poate fi reprezentat
in Java ca un obiect din clasa Long (din pachetul
java.lang). Un obiect de tip Long contine un
singur camp al carui tip este long. A. Pentru
conversia de la tipul de data long la tipul de
data String se poate folosi metoda toString a
clasei de obiecte Long, in cele doua variante
descrise la tipul Integer. Modul de folosire a
acestei metode este la fel ca la tipul de obiecte
Integer. B. Pentru conversia de la tipul de data
String la tipul de data long se poate folosi
metoda parseLong a clasei de obiecte Long, in
cele doua variante descrise la tipul Integer.
Modul de folosire a acestei metode este la fel ca
la tipul de obiecte Integer. De
exemplu parseLong("473", 10) returneaza 473L
parseLong("1100110", 2) returneaza 102L
44
Tipul de data float poate fi reprezentat in Java
ca un obiect din clasa Float (din pachetul
java.lang). Un obiect de tip Float contine un
singur camp al carui tip este float. A. Pentru
conversia de la tipul de data float la tipul de
data String se poate folosi metoda toString a
clasei de obiecte Float. Antetul metodei
este public static String toString(float ltfgt)
Metoda returneaza un nou sir de caractere
continand valoarea precizata de parametrul ltfgt.
De exemplu String s1 Float.toString(20.3) //
s1 contine valoarea 20.3
45
B. Pentru conversia de la tipul de data String la
tipul de data float se poate folosi metoda
parseFloat a clasei de obiecte Float. Antetul
metodei este public static float
parseFloat(String ltsirgt) Metoda returneaza
reprezentarea de tipul float, a continutului
sirului de caractere din parametrul ltsirgt.
Aceasta metoda genereaza o exceptie (eroare) daca
String-ul de convertit nu contine o valoare de
tip float. De exemplu float y
Float.parseFloat(1.10) // y contine valoarea
numerica 1.10 Tipul de data double poate fi
reprezentat in Java ca un obiect din clasa Double
(din pachetul java.lang). Un obiect de tip Double
contine un singur camp al carui tip este double.
A. Pentru conversia de la tipul de data double
la tipul de data String se poate folosi metoda
toString a clasei de obiecte Double. Modul de
folosire a acestei metode este la fel ca la tipul
de obiecte Float. B. Pentru conversia de la
tipul de data String la tipul de data double se
poate folosi metoda parseDouble a clasei de
obiecte Double. Modul de folosire a acestei
metode este la fel ca la tipul de obiecte Float.
46
Tipul de data char poate fi reprezentat in Java
ca un obiect din clasa Character (din pachetul
java.lang). Un obiect de tip Character contine un
singur camp al carui tip este char. Din clasa
Character vom prezenta metoda isDigit, utilizata
pentru a testa daca o valoare de tip char
reprezinta o cifra sau nu. Metoda isDigit are
urmatorul antet public static boolean
isDigit(char ltchgt) Metoda returneaza valoarea
true daca parametrul ltchgt este o cifra, altfel
returneaza valoarea false. Aceasta metoda este
important de folosit pentru conversiile de la
tipul String la tipurile primitive de date,
deoarece in cazul valorilor nenumerice, metodele
de conversie prezentate arunca exceptii (dau
erori). Programul prezentat anterior se poate
modifica astfel incat sa putem verifica daca
datele introduse de la tastatura sunt numere sau
nu. Prezentam mai jos secventa de cod care face
aceasta verificare (isDigitTest1.java).
47
import java.io. class isDigitTest1 public
static void main(String args) throws
IOException char caractere new
char20 for (int i0 i lt19
i) caracterei ' ' BufferedReader br1
new BufferedReader(new InputStreamReader(System.in
)) System.out.println ("Introduceti
numarul") br1.read(caractere, 0, 20) int j
0 while (caractere j ! '\r' ) if
(!Character.isDigit(caracterej)) System.out.
println("Nu este numar")
return j
48
Folosirea clasei Math pentru calcule matematice
Clasa Math face parte din pachetul java.lang.
Aceasta clasa contine mai multe metode statice
(de clasa) prin care se calculeaza valorile unor
functii clasice din matematica (logaritmice,
exponentiale, trigonometrice, etc.). In tabelul
de mai jos sunt descrise formatele metodelor mai
des folosite din clasa Math.
49
(No Transcript)
50
(No Transcript)
51
Iata câteva exemple de apel al metodelor clasei
Math Math.ceil(3.36) returneaza 4
Math.ceil(-3.36) returneaza 3
Math.floor (3.36) returneaza 3
Math.floor(-3.36) returneaza 4 Math.round(3.36)
returneaza 3 Math.round(-3.36) returneaza
3 Math.round(3.56) returneaza 4
Math.round(-3.56) returneaza 4 Math.round(-3.5)
returneaza 3 Math.round(3.5) returneaza 4
52
  • Separarea elementelor lexicale (tokens)
    distincte din cadrul unui sir de caractere. Clasa
    StringTokenizer
  • Clasa StringTokenizer este inclusa în pachetul
    java.util si permite separarea elementelor
    lexicale (tokens) distincte din cadrul unui sir
    de caractere.
  • Separarea în elemente lexicale (tokenization)
    înseamna împartirea într-un numar de elemente
    lexicale distincte, printr-un caracter
    delimitator, a sirului initial. Implicit, Java
    foloseste ca delimitatori ai elementelor lexicale
    caracterul tab, caracterul spatiu si caracterul
    de linie noua (newline). Obiectele de tip
    StringTokenizer pot fi construite pentru a
    accepta si alti delimitatori de elemente
    lexicale.
  • Metodele-constructor ale clasei StringTokenizer,
    mai des folosite, au forma
  • a) StringTokenizer(String ltstrgt)
  • unde ltstrgt - specifica sirul de caractere supus
    separarii în elemente lexicale
  •  
  • b) StringTokenizer(String ltstrgt, String
    ltdelimitatorgt)
  • unde
  • - ltstrgt - specifica sirul de caractere supus
    separarii în elemente lexicale
  • ltdelimitatorgt - specifica o lista de caractere de
    delimitare de exemplu, un parametru de felul
    , indica faptul ca delimitatorii sunt virgula
    si doua puncte.
  • Constructorul prezentat la pct. b) este folosit
    pentru a schimba delimitatorul implicit de
    elemente lexicale.

53
Vom descrie câteva metode ale clasei
StringTokenizer. Metoda nextToken() este folosita
pentru a extrage fiecare element lexical dintr-un
sir de caractere utilizând delimitatorii
impliciti Java sau delimitatorii precizati
explicit la crearea obiectului de tip
StringTokenizer. Antetul metodei este String
nextToken() Metoda returneaza un sir de
caractere care reprezinta elementul lexical
extras. Metoda nextToken() poate fi folosita si
cu un parametru de tip String care are ca efect
schimbarea delimitatorului folosit pentru
separarea elementelor lexicale din sirul curent
dupa ce obiectul de tip StringTokenizer a fost
creat. În acest caz, metoda nextToken() are
forma String nextToken(String
ltdelimitator_nougt) unde - ltdelimitator_nougt -
specifica noul delimitator dupa care se va face
extragerea unui element lexical, de la pozitia
curenta în sirul curent supus separarii pâna la
întâlnirea delimitatorului precizat în parametrul
metodei. Metoda returneaza un sir de caractere
care reprezinta elementul lexical extras pe baza
noului delimitator. Aceasta metoda genereaza o
exceptie (eroare) de tip NoSuchElementException
daca nu mai exista nici un element lexical în
sirul curent supus separarii.
54
Metoda hasMoreTokens() este folosita pentru a
afla daca sirul curent supus separarii contine
mai multe elemente lexicale. Antetul metodei
este boolean hasMoreTokens() Metoda returneaza
valoarea true daca sirul curent supus separarii
contine mai multe elemente lexicale si false daca
nu. Urmatoarea secventa de cod ilustreaza
folosirea metodei nextToken() cu un parametru,
precum si a metodei hasMoreTokens() StringTokeniz
er st new StringTokenizer(Nume si
PrenumeIonescu Florin, ) System.out.println(
Primul element - st.nextToken()) while
(st.hasMoreTokens()) System.out.println(Urmato
rul element - st.nextToken( )) În acest
caz, programul va afisa urmatorul
rezultat Primul element - Nume si
Prenume Urmatorul element - Ionescu Urmatorul
element - Florin
55
Metoda countTokens() este folosita pentru a
specifica numarul de elemente lexicale pe care le
contine sirul curent supus separarii. Antetul
metodei este int countTokens() Metoda returneaza
un întreg care reprezinta numarul de elemente
lexicale pe care le contine sirul curent. Vom
prezenta un program (TestStringTokenizer.java)
care ilustreaza modul de folosire a unui obiect
de tip StringTokenizer pentru a separa un sir de
numere citite de la tastatura pe aceeasi linie
folosind ca delimitator caracterul spatiu sau
tab. Dupa citire, sirul de numere este stocat
într-un tablou de numere întregi. Programul
foloseste doua metode si anume citesteString()
si citesteSeparaSir(). Metoda citesteString()
citeste de la tastatura un sir de numere pe o
singura linie. Metoda citesteSeparaSir() separa
sirul de numere citit în elemente lexicale
folosind ca delimitator caracterul spatiu si
converteste aceste elemente lexicale într-un
tablou de numere întregi.
56
import java.io. import java.util.StringTokenizer
class TestStringTokenizer public static
void main(String args) throws IOException
TestStringTokenizer tst new
TestStringTokenizer()
System.out.println("Introduceti un sir de numere
pe aceeasi linie, despartite prin Tab")
int tablouInt tst.citesteSeparaSir()
System.out.println ("Tabloul de numere
citit este ") for (int i 0 i lt
tablouInt.length i) System.out.println(tablou
Inti " ") String citesteString()
throws IOException BufferedReader
br new BufferedReader(new InputStreamReader(Syst
em.in)) return br.readLine()
int citesteSeparaSir() throws IOException
String sir citesteString()
StringTokenizer st new StringTokenizer(sir)
int tablou new intst.countTokens()
for (int i 0 i lt tablou.length
i) tabloui Integer.parseInt(st.nextToken())
return tablou
Write a Comment
User Comments (0)
About PowerShow.com