Sunteți pe pagina 1din 42

Java 1 – Curs 8 Alin Olteanu

Platinum Sponsor:
Agenda
 Recapitulare
 Recapitulare
 Clasa Math
 Clasa Math
 Clasa System
 Clasa System
 Clasa String
 Clasa String
 Clase Wrapper
 Clase Wrapper
 Clasa Random
 Clasa Random
 Clasa Scanner
 Clasa Scanner
 Tipuri generice
 Tipuri generice
 Colectii
 Colectii 2
Recapitulare
• Clasa Object
• Garbage collector

• Exceptii si erori

3
Agenda
 Recapitulare
 Recapitulare
 Clasa Math
 Clasa Math
 Clasa System
 Clasa System
 Clasa String
 Clasa String
 Clase Wrapper
 Clase Wrapper
 Clasa Random
 Clasa Random
 Clasa Scanner
 Clasa Scanner
 Tipuri generice
 Tipuri generice
 Colectii
 Colectii 5
Clasa Math
• clasa utilitar pentru operatii matematice
fundamentale (toate metodele sunt statice)
• constante (Euler si Pi)
• abs (modul), sin, cos, sqrt, floor, ceil
• Math.random() - singura care nu primeste
parametri
• Atentie daca se incearca createa unui
obiect de tip Math!!

6
Agenda
 Recapitulare
 Recapitulare
 Clasa Math
 Clasa Math
 Clasa System
 Clasa System
 Clasa String
 Clasa String
 Clase Wrapper
 Clase Wrapper
 Clasa Random
 Clasa Random
 Clasa Scanner
 Clasa Scanner
 Tipuri generice
 Tipuri generice
 Colectii
 Colectii 7
Clasa System
• mai mult la Java 1P (pt OCP nu OCA)

• out - fluxuri de iesire; in - fluxuri de intrare (citire de la tastatura; Scanner; nu se


poate folosi System.in pt ca se citesc biti si apoi tre sa facem conversia); err -
trimite erori primite catre sistemul de logare (nu se folosesc in practica; Log4j)

• array copy (trebuie sa aiba aceeasi dimensiune)

• console (intoarce o instanta a clasei Console si are rolul de a scrie si citi de la


consola; in Console exista readPassword(); ne ajuta sa citim parole din consola)
- intoarce un vector de caractere nu un string

• currentTimeMillis() - nr de milisecunde de la 1970; daca e negativ este inainte


de 1970

• exit(int status) - inchidem complet procesul curent; status - 0 - vrem sa


inchidem voit acest proces; finally-ul nu mai executa (la fel ca pt erori -
OutOfMemory)

• gc() - eliminarea din memoria a instantelor catre care nu mai exista referinte

8
Agenda
 Recapitulare
 Recapitulare
 Clasa Math
 Clasa Math
 Clasa System
 Clasa System
 Clasa String
 Clasa String
 Clase Wrapper
 Clase Wrapper
 Clasa Random
 Clasa Random
 Clasa Scanner
 Clasa Scanner
 Tipuri generice
 Tipuri generice
 Colectii
 Colectii 9
String
• stocare de siruri de caractere
• sunt 10 constructori (ne intereseaza doar cel
care primeste un parametru)
• este o dif intre alocare cu "" si cu new
String("");
• orice instanta de String este immutable
(orice facem nu se modifica, ci se face alta)
• la concatenare nu se recomanda String
(concatenare in afara buclei repetitive este
acceptata)

10
String Pool
• in memorie este o zona numita
String pool (eficientizeaza
alocarea spatiului pt String-uri)
• atunci cand facem un sir de
caractere in mod direct atunci
asta este cautat prima data in
String pool, ci se va trage o
referinta de acolo (instantele
sunt unice)
• Ex: Hello, Hello, World, Java
(cate instante sunt folosite?)

11
Metode
• charAt(character de index-ul indicat)
• compareTo (negativ daca primul mai mic ca al
doilea; literele mici sunt mai mari decat literele
mari)
• compareToIgnoreCase()
• concat(echivalent cu +; atentie la dereferentiere
din null; exemplu cu null + "a")
• contains()
• endsWith()
• startsWith()

12
Metode
• equals (testeaza sirul de caractere sa fie
egale)

• equalsIgnoreCase (nu tine cont de case-ul


caracterelor)

• indexOf()

• length (atentie la paranteze; la array length


era un atribut care tine minte nr de zone de
memorie)

• substring (subsirul de la indexul dat pana la


sfarsit sau pana la parametrul 2)

• trim (sterge spatiile de la inceput si sfarsit)

• valueOf (trece dintr-un tip de date intr-un


String; pt obiecte se apeleaza toString())

13
• CharSequence interfata implementata de
String
• StringBuffer si StringBuilder - folosite pt a
modifica string-urile; instantele lor nu
sunt immutable
• StringBuffer are metodele sincronizate (se
discuta mai mult la OCP)
• StringBuilder este mai rapid decat
StringBuffer
• pentru OCA se considera ca sunt
echivalente

StringBuffer si StringBuilder
14
• delete - sterge un subsir
exclusiv end
• deleteCharAt
• insert
• replace
• reverse
• setCharAt
• substring

Metode StringBuffer si
StringBuilder
15
Agenda
 Recapitulare
 Recapitulare
 Clasa Math
 Clasa Math
 Clasa System
 Clasa System
 Clasa String
 Clasa String
 Clase Wrapper
 Clase Wrapper
 Clasa Random
 Clasa Random
 Clasa Scanner
 Clasa Scanner
 Tipuri generice
 Tipuri generice
 Colectii
 Colectii 16
Clase Wrapper
 Pentru orice tip de primitiva exista o clasa
 Pentru orice tip de primitiva exista o clasa
wrapper
wrapper
 Au rolul de a trata tipuri primitive ca obiecte
 Au rolul de a trata tipuri primitive ca obiecte
 Instantele acestora sunt immutable desi nu
 Instantele acestora sunt immutable desi nu
se stocheaza intr-o zona speciala de
se stocheaza intr-o zona speciala de
memorie ca StringPool-ul
memorie ca StringPool-ul
 Boxing si Unboxing – incepand cu Java 6
 Boxing si Unboxing – incepand cu Java 6 17
Clase Wrapper
 Se poate supraincarca folosing o primitiva si un
 Se poate supraincarca folosing o primitiva si un
wrapper – prioritate are cea in care nu trebuie
wrapper – prioritate are cea in care nu trebuie
sa faca conversie
sa faca conversie
 Nu poate sa faca mai mult de o conversie -/->
 Nu poate sa faca mai mult de o conversie -/->
Short -> short -> int
Short -> short -> int

18
Clasa Integer
 Integer i = 5 (boxing)
 Integer i = 5 (boxing)
 int x = i (unboxing)
 int x = i (unboxing)
 intValue() – transforma din Integer in int
 intValue() – transforma din Integer in int
 valueOf() – transforma in tipul clasei wrapper
 valueOf() – transforma in tipul clasei wrapper
 parseInt() – trasforma un sir de caractere
 parseInt() – trasforma un sir de caractere
direct in primitiva
direct in primitiva
19
Agenda
 Recapitulare
 Recapitulare
 Clasa Math
 Clasa Math
 Clasa System
 Clasa System
 Clasa String
 Clasa String
 Clase Wrapper
 Clase Wrapper
 Clasa Random
 Clasa Random
 Clasa Scanner
 Clasa Scanner
 Tipuri generice
 Tipuri generice
 Colectii
 Colectii 20
Clasa Random
 Java.util.Random
 Java.util.Random
 Nu este pentru certificarea de OCA, dar este foarte
 Nu este pentru certificarea de OCA, dar este foarte
folosita in practica
folosita in practica
 Comportamente:
 Comportamente:
 nextInt()
 nextInt()
 nextInt(maxValue) => [0, maxValue)
 nextInt(maxValue) => [0, maxValue)
 nextBoolean() => true sau false
 nextBoolean() => true sau false
 nextDouble() => [0.0 – 1.0)
 nextDouble() => [0.0 – 1.0) 21
Agenda
 Recapitulare
 Recapitulare
 Clasa Math
 Clasa Math
 Clasa System
 Clasa System
 Clasa String
 Clasa String
 Clase Wrapper
 Clase Wrapper
 Clasa Random
 Clasa Random
 Clasa Scanner
 Clasa Scanner
 Tipuri generice
 Tipuri generice
 Colectii
 Colectii 22
Clasa Scanner
 Java.util.Random
 Java.util.Random
 Scanner scanner = new Scanner(System.in)
 Scanner scanner = new Scanner(System.in)
 Citirea urmatoarei linii se face cu
 Citirea urmatoarei linii se face cu
scanner.nextLine()
scanner.nextLine()

23
Exercitii
 Cititi de la tastatura un sir de caractere si afisati-l in ordine
 Cititi de la tastatura un sir de caractere si afisati-l in ordine
inversa
inversa
 Sa se citeasca doua numere si sa se afiseze suma lor
 Sa se citeasca doua numere si sa se afiseze suma lor
 Sa se citeasca de la tastatura un nr intreg si sa se afiseze n
 Sa se citeasca de la tastatura un nr intreg si sa se afiseze n
nr aleatoare in intervalul 0 si 999
nr aleatoare in intervalul 0 si 999
 Se se citeasca doua numere a si b si sa se afiseze a la
 Se se citeasca doua numere a si b si sa se afiseze a la
puterea b
puterea b
 Sa se citeasca doua siruri a si b si sa se afiseze daca a si b
 Sa se citeasca doua siruri a si b si sa se afiseze daca a si b
sunt egale ignorand literele mari si mici
sunt egale ignorand literele mari si mici 24
Agenda
 Recapitulare
 Recapitulare
 Clasa Math
 Clasa Math
 Clasa System
 Clasa System
 Clasa String
 Clasa String
 Clase Wrapper
 Clase Wrapper
 Clasa Random
 Clasa Random
 Clasa Scanner
 Clasa Scanner
 Tipuri generice
 Tipuri generice
 Colectii
 Colectii 25
Tipuri generice
 ne dau o flexibilitate mai mare pentru folosirea
 ne dau o flexibilitate mai mare pentru folosirea
unui element pentru o anumita instanta
unui element pentru o anumita instanta
 paranteze unghiulare cu un identificator pentru
 paranteze unghiulare cu un identificator pentru
un tip de data (se poate folosi orice litera;
un tip de data (se poate folosi orice litera;
standard este o majuscula)
standard este o majuscula)
 folosite pentru a definit atribute, pentru
 folosite pentru a definit atribute, pentru
parametri, pentru tip returnat (pentru orice tip
parametri, pentru tip returnat (pentru orice tip
de date folosit in descrierea prototipului)
de date folosit in descrierea prototipului) 26
Tipuri generice
 nu se poate folosi in static
 nu se poate folosi in static
 tipul generic se precizeaza la momentul crearii instantei
 tipul generic se precizeaza la momentul crearii instantei
(se fol doar pentru elemenetele individuale ale instantei)
(se fol doar pentru elemenetele individuale ale instantei)
 se poate folosi in metode statice dar trebuie redeclarat
 se poate folosi in metode statice dar trebuie redeclarat
la metoda respectiva
la metoda respectiva
 valoarea implicita este Object (sintaxa nu este standard;
 valoarea implicita este Object (sintaxa nu este standard;
deci trebuie sa aiba ceva definit) –pentru compatibilitate
deci trebuie sa aiba
cu vechile programe ceva definit) –pentru compatibilitate
cu vechile programe
27
Tipuri generice
 new A();
 new A();
 new A<Integer>();
 new A<Integer>();
 new A<int[]>();
 new A<int[]>();

28
Referinta tipurilor generice
 clasa cu tipul ei generic formeaza un alt tip de referinta

 clasa cu tipul ei generic
cand este cu extends sauformeaza un alt tip
cu ? nu putem de referinta
adauga elemente pur si simplu (ca nu se stie tipul
 cand
exact este cu extends sau
al elementului); cu ? nulaputem
in schimb super adauga
merge felemente
bine pur si simplu (ca nu se stie tipul
 exact al elementului);
<?> accepta orice in schimb la super merge f bine

 <?> accepta orice
<obiect> - constrangere maxima; doar acest tip de obiect; nu respecte polimorfismul Y is a
X<obiect>
=> A<X>- =>rezulta
constrangere maxima;
ca nu putem doar acest tip de obiect; nu respecte polimorfismul Y is a
new A<Y>
X<?=> A<X> =>rezulta
extends Number>ca nu putem new A<Y>

 <?
<? extends Number>
super Integer>

 <? super Integer>
incepand cu vers 7 A<Integer> a = new A<>(); - diamond; standard este folosit doar cu
 incepand cu vers
constrangere 7 A<Integer>
implicita; cu restula =este
new A<>(); - diamond; standard este folosit doar cu
ambigua;
 constrangere implicita;
putem avea oricate cugenerice
tipuri restul este ambigua;
vrem, separate prin virgula

 putem aveaclasei
oricate tipurisa
generice
la definirea putem trecem vrem, separateNprin
la tip generic virgula
extends Number; daca facem C<?>
 inseamna
la definireacaclasei
o aibaputem sa Number
default trecem la tip generic N extends Number; daca facem C<?>
inseamna ca o aiba default Number 29
Referinta tipurilor generice
 public class A<T>
 public class A<T>
 public class B<T, G>
 public class B<T, G>
 public class D extends A<Integer>
 public class D extends A<Integer>
 public class D<Q> extends A<Q>
 public class D<Q> extends A<Q>
 public class D<Q, W> extends A<Q>
 public class D<Q, W> extends A<Q>
 public class D<Q, W> extends A<W>
 public class D<Q, W> extends A<W>
 public class D<Q, W> extends A<Integer>
 public class D<Q, W> extends A<Integer>
 public class F<R> extends B<Integer, R>
 public class F<R> extends B<Integer, R>
 public class G <X, Y> extends B<Y, X>
 public class G <X, Y> extends B<Y, X> 30
Agenda
 Recapitulare
 Recapitulare
 Clasa Math
 Clasa Math
 Clasa System
 Clasa System
 Clasa String
 Clasa String
 Clase Wrapper
 Clase Wrapper
 Clasa Random
 Clasa Random
 Clasa Scanner
 Clasa Scanner
 Tipuri generice
 Tipuri generice
 Colectii
 Colectii 31
Colectii
 foarte putin pt OCA; dar f mult la OCP si in practica
 foarte putin pt OCA; dar f mult la OCP si in practica
 java.util. - List, Set, Queue - toate extind Collection,
 java.util. - List, Set, Queue - toate extind Collection,
Map
Map
 List - ArrayList (OCA), LinkedList (mosteneste pe List si
 List - ArrayList (OCA), LinkedList (mosteneste pe List si
Queue)
Queue)
 Queue - ArrayDeque
 Queue - ArrayDeque
 Set - HashSet, LinkedHashSet, TreeSet
 Set - HashSet, LinkedHashSet, TreeSet
 Map - HashMap, LinkedHashMap, TreeMap
 Map - HashMap, LinkedHashMap, TreeMap 32
Liste
 o colectie este grupare de elemente ce respecta
 o colectie este grupare de elemente ce respecta
un set de reguli cunoscute dat de tipul colectiei
un set de reguli cunoscute dat de tipul colectiei
 listele sunt colectii care permit duplicate
 listele sunt colectii care permit duplicate
(equals)
(equals)

33
ArrayList
 List<Integer> list = new ArrayList<>();
 List<Integer> list = new ArrayList<>();
 list.size(); list.isEmpty(); list.get(nr); list.remove(nr)
 list.size(); list.isEmpty(); list.get(nr); list.remove(nr)
 for normal; enhanced for; iterator, list.forEach(e ->
 for normal; enhanced for; iterator, list.forEach(e ->
syso(e)) => Consumer (cand ai aceeasi parametri si in
syso(e)) => Consumer (cand ai aceeasi parametri si in
stanga si in dreapta se folosesc ::)
stanga si in dreapta se folosesc ::)
 interfete functionale: Predicate, Consumer, BiConsumer
 interfete functionale: Predicate, Consumer, BiConsumer
 remove (Collection) - face remove la prima aparitie a
 remove (Collection) - face remove la prima aparitie a
elementului
elementului
34
ArrayList
 remove (List) - mosteneste Collections; supraincarca metoda
 remove
remove (List) - mosteneste
cu pozitia si eliminaCollections;
elementul desupraincarca metoda
pe pozitia nr
remove cu pozitia si elimina elementul de pe pozitia nr
 remove(new Integer(2)) - elimina prima aparitie
 remove(new Integer(2)) - elimina prima aparitie
 List<? extends Number> list = new ArrayList<Integer>(); -
 List<? extends nu
polimorfismul Number> list = new
este garantat si nuArrayList<Integer>();
merge compilarea -
polimorfismul nu este garantat si nu merge compilarea
 list.add(10);
 list.add(10);
 list.stream().filter(e -> e % 2 ==
 list.stream().filter(e -> e % 2 == - Predicate are tip generic
0).forEach(System.out::println);
0).forEach(System.out::println); - Predicate are tip generic
 List<Integer> list = Arrays.asList(5,4,5,8,9);
 List<Integer> list = Arrays.asList(5,4,5,8,9); 35
LinkedList
 asemanatoare lui ArrayList cu exceptia ca are un inceput si un
 asemanatoare
sfarsit lui ArrayList cu exceptia ca are un inceput si un
sfarsit
 Inca 4 metode
 Inca 4 metode
 addFirst
 addFirst
 removeFirst
 removeFirst
 addLast
 addLast
 removeLast
 removeLast
 List are toString() suprascris
 List are toString() suprascris
 ne ajuta la crearea de stive si cozi
 ne ajuta la crearea de stive si cozi 36
ArrayDeque
 inlocuieste LinkedList si se considera ca e mai rapida (folosita
 inlocuieste LinkedList si se considera ca e mai rapida (folosita
de asemenea pt stive si cozi)
de asemenea pt stive si cozi)
 push (adauga un element in stiva)
 push (adauga un element in stiva)
 offer (adauga elementul la coada)
 offer (adauga elementul la coada)
 peek (ia primul element din stiva)
 peek (ia primul element din stiva)
 poll (elimina si returneaza primul element si returneaza null
 poll (elimina si returneaza primul element si returneaza null
daca nu este nici un element)
daca nu este nici un element)
 pop (elimina si returneaza primul element; arunca o
 pop (elimina si returneaza primul element; arunca o
exceptie daca nu are element)
exceptie daca nu are element) 37
Vector
 nu se mai foloseste
 nu se mai foloseste
 metode sincronizate
 metode sincronizate
 la fel ca ArrayList-ul
 la fel ca ArrayList-ul
 Vector<String> vec = new Vector<String>(2);
 Vector<String> vec = new Vector<String>(2);
 addElement()
 addElement()
 vec.size()
 vec.size()
 vec.capacity()
 vec.capacity() 38
Vector
 Vector vec = new Vector(3);
 Vector vec = new Vector(3);
 Vector vec= new Vector(4, 6)
 Vector vec= new Vector(4, 6)
 Enumeration en = vec.elements();
 Enumeration en = vec.elements();
 en.hasMoreElements()
 en.hasMoreElements()
 en.nextElement()
 en.nextElement()

39
Agenda
 Recapitulare
 Recapitulare
 Clasa Math
 Clasa Math
 Clasa System
 Clasa System
 Clasa String
 Clasa String
 Clase Wrapper
 Clase Wrapper
 Clasa Random
 Clasa Random
 Clasa Scanner
 Clasa Scanner
 Tipuri generice
 Tipuri generice
 Colectii
 Colectii 40

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