Sunteți pe pagina 1din 141

Capitolul I

1. Java Introduction
Java este un limbaj de programare popular, creat în 1995, este deținut de Oracle și peste 3
miliarde de dispozitive rulează pe Java.

Se folosește pentru:

 Aplicații mobile (în special aplicații Android)


 Aplicații desktop
 Aplicații web
 Servere web și servere de aplicații
 Jocuri
 Conexiune la baza de date
 Și mult, mult mai mult!
De ce să folosești Java?

 Java funcționează pe diferite platforme (Windows, Mac, Linux, Raspberry Pi etc.)


 Este unul dintre cele mai populare limbaje de programare din lume
 Este ușor de învățat și simplu de utilizat
 Este open-source și gratuit
 Este sigur, rapid și puternic
 Are un suport comunitar uriaș (zeci de milioane de dezvoltatori)

Sa incepem !

Acest tutorial vă va învăța elementele de bază ale Java.


Nu este necesar să aveți experiență de programare anterioară.

Clasificare BT: Uz Intern


2. Java Getting Started

Unele PC-uri pot avea Java deja instalat.


Pentru a verifica dacă aveți Java instalat pe un computer Windows, căutați în bara de pornire
pentru Java sau introduceți următoarele în Command Prompt (cmd.exe):

Dacă Java este instalat, veți vedea ceva de genul (în funcție de versiune):

Dacă nu aveți Java instalat pe computer, îl puteți descărca gratuit de la oracle.com.

Clasificare BT: Uz Intern


3. Java Syntax
3.1 Java Syntax
În capitolul precedent, am creat un fișier Java numit MyClass.java și am folosit următorul cod
pentru a imprima „Hello World” pe ecran:

Exemplu explicat
Fiecare linie de cod care rulează în Java trebuie să se afle în interiorul unei clase. În exemplul
nostru, am numit clasa MyClass. O clasă ar trebui să înceapă întotdeauna cu majuscule.
Notă: Java este sensibil la majuscule și minuscule: „MyClass” și „myclass” au semnificații
diferite.
Numele fișierului java trebuie să corespundă cu numele clasei. Când salvați fișierul, salvați-l
folosind numele clasei și adăugați „.java” la sfârșitul numelui fișierului. Pentru a rula exemplul
de mai sus pe computerul dvs., asigurați-vă că Java este instalat corespunzător: Accesați
capitolul Noțiuni introductive despre cum să instalați Java.
Output-ul ar trebui sa fie :

Clasificare BT: Uz Intern


3.2 The mail Method
Metoda main () este necesară și o veți vedea în fiecare program Java:

Orice cod din metoda main () va fi executat. Nu trebuie să înțelegeți cuvintele cheie înainte și
după main.Veți ajunge să le cunoașteți putin câte putin în timp ce citiți acest tutorial.
Deocamdată, amintiți-vă doar că fiecare program Java are un nume de clasă care trebuie să se
potrivească cu numele de fișier și că fiecare program trebuie să conțină metoda main().

3.3 System.out.println()
În cadrul metodei main (), putem folosi metoda println () pentru a imprima pe ecran o linie de
text:

Notă: În Java, fiecare instrucțiune de cod trebuie să se încheie cu punct și virgulă.

Clasificare BT: Uz Intern


4. Java Comments
4.1 Java Comments
Comentariile pot fi utilizate pentru a explica codul Java și pentru a-l face mai citibil. Poate fi, de
asemenea, utilizat pentru a preveni executarea la testarea codului alternativ. Comentariile cu o
singură linie încep cu două slash-uri (//). Orice text cuprins între // și sfârșitul liniei este ignorat
de Java (nu va fi executat).
Acest exemplu utilizează un comentariu cu o singură linie înaintea unei linii de cod:

Acest exemplu utilizează un comentariu cu o singură linie la sfârșitul unei linii de cod:

4.2 Java Multi-line Comments


Comentariile cu mai multe linii încep cu /* și se termină cu */
Orice text între /* și */ va fi ignorat de Java.

Acest exemplu utilizează un comentariu cu mai multe linii (un bloc de comentarii) pentru a
explica codul:

Clasificare BT: Uz Intern


5. Java Variables

5.1 Java Variables


Variabilele sunt containere pentru stocarea valorilor datelor.
În Java, există diferite tipuri de variabile, de exemplu:
 String - stochează text, cum ar fi „Hello”. Valorile string sunt înconjurate de ghilimele
duble
 int - stochează numere întregi, fără zecimale, cum ar fi 123 sau -123
 float - stochează numerele cu pucte variabile, cu zecimale, cum ar fi 19.99 sau -19.99
 char - stochează caractere unice, cum ar fi „a” sau „B”. Valorile de încărcare sunt
înconjurate de ghilimele unice
 boolean - stochează valori cu două stări: adevărat sau fals

5.2 Declaring (Creating) Variables

Pentru a crea o variabilă, trebucharie să specificați tipul și să îi atribuiți o valoare:

În cazul în care tipul este unul dintre tipurile Java (cum ar fi int sau String) și variabilă este
numele variabilei (cum ar fi x sau nume). Semnul egal este utilizat pentru a atribui valori
variabilei.
Pentru a crea o variabilă care ar trebui să stocheze text, uitați-vă la următorul exemplu:

Ex :

Creați o variabilă numită name de tip String și atribuiți-i valoarea "John":

Puteți, de asemenea, să declarați o variabilă fără a atribui valoarea și a atribui valoarea mai
târziu:

Clasificare BT: Uz Intern


O demonstrație a modului de declarare a variabilelor de alte tipuri:

5.3 Display Variables


Metoda println () este adesea folosită pentru afișarea variabilelor.
Pentru a combina atât textul cât și o variabilă, utilizați caracterul + :

De asemenea, puteți utiliza caracterul + pentru a adăuga o variabilă la o altă variabilă:

Pentru valori numerice, caracterul + funcționează ca un operator matematic (observați că aici


folosim int (integer)):

Din exemplul de mai sus, vă puteți aștepta:

 x stochează valoarea 5
 y stochează valoarea 6
 Apoi folosim metoda println () pentru a afișa valoarea x + y, care este 11

Clasificare BT: Uz Intern


5.4 Declare Many Variables
Pentru a declara mai multe variabile de același tip, utilizați o listă separată prin virgule:

5.5 Java Identifiers

Toate variabilele Java trebuie identificate cu nume unice.


Aceste nume unice se numesc identificatori.
Identificatorii pot fi nume scurte (precum x și y) sau mai multe denumiri descriptive (age, sum,
totalVolume).

Regulile generale pentru construirea de nume pentru variabile (identificatori unici) sunt:

 Numele pot conține litere, cifre, sublinieri și semne în dolari


 Numele ar trebui să înceapă cu o literă
 Numele pot începe, de asemenea, cu $ și _ (dar nu le vom folosi în acest tutorial)
 Denumirile sunt sensibile cu majuscule ( „myVal” si “myval” sunt diferite)
 Numele ar trebui să înceapă cu o litere mici și nu poate conține spațiu alb
 Cuvintele rezervate (cum ar fi cuvintele cheie Java, cum ar fi int sau String) nu pot fi
folosite ca nume

Clasificare BT: Uz Intern


6. Java Data Types

6.1 Java Data Types

Așa cum am explicat în capitolul precedent, o variabilă în Java trebuie să ii fie specificat tipul de
date.

Tipurile de date sunt împărțite în două grupuri:

 Tipuri de date primitive – include byte, short, int, long, float, double, boolean si char


 Tipuri de date non-primitive – cum ar fi  String, Arrays si Classes 

6.2 Primitive data Type

Un tip de date primitiv specifică dimensiunea și tipul valorilor variabile și nu are metode
suplimentare.
Există opt tipuri de date primitive în Java:

Clasificare BT: Uz Intern


6.3 Numbers

Tipurile de numere primitive sunt împărțite în două grupuri:

 Integer Types stochează numere întregi, pozitive sau negative (cum ar fi 123 sau -456),
fără zecimale. Tipurile valide sunt byte, short, int și long. Tipul pe care ar trebui să il
folosești, depinde de valoarea numerică.
 Floating point types reprezintă numere cu o parte fracționată, care conține unul sau mai
multe zecimale. Există două tipuri: float si double.

! Chiar dacă există mai multe tipuri numerice în Java, cele mai utilizate pentru numere sunt int
(pentru numere întregi) și duble (pentru numere în virgule plutitoare). Cu toate acestea, le vom
descrie pe toate în timp ce continuați să citiți.

6.4 Integer Types

6.4.1 Byte

Tipul de date byte poate stoca numere întregi între -128 și 127. Acesta poate fi utilizat în loc de
int sau alte tipuri întregi pentru a salva memorie când sunteți sigur că valoarea va fi cuprinsă
între -128 și 127:

6.4.2 Short

Tipul de date short poate stoca numere întregi de la -32768 la 32767:

6.4.3 Int

Tipul de date int poate stoca numere întregi de la -2147483648 la 2147483647. În general, tipul
de date int este tipul de date preferat atunci când creăm variabile cu o valoare numerică.

10

Clasificare BT: Uz Intern


6.4.4 Long

Tipul de date long poate stoca numere întregi de la -9223372036854775808 până la


9223372036854775807. Acesta este utilizat atunci când int nu este suficient de mare pentru a
stoca valoarea. Rețineți că ar trebui să închei valoarea cu o "L":

6.5 Floating Point Types

Ar trebui să utilizați un tip de virgule mobila ori de câte ori aveți nevoie de un număr cu o
zecimală, cum ar fi 9.99 sau 3.14515.

6.5.1 Float

Tipul de date float poate stoca numere fracționale de la 3.4e − 038 la 3.4e + 038. Rețineți că ar
trebui să închei valoarea cu o "f":

6.5.2 Double

Tipul de date double poate stoca numere fracționale de la 1,7e − 308 la 1,7e + 308. Rețineți că
ar trebui să închei valoarea cu o „d”:

Folosiți float sau dublu?

Precizia unei valori in virgule mobile indică câte cifre poate avea valoarea după punctul zecimal.
Precizia unu float este de doar șase sau șapte cifre zecimale, în timp ce variabilele double au o
precizie de aproximativ 15 cifre. Prin urmare, este mai sigur să folosiți double pentru majoritatea
calculelor.

11

Clasificare BT: Uz Intern


6.5.3 Scientific Numbers

Un număr cu virgula mobila poate fi, de asemenea, un număr științific cu un "e" pentru a indica
puterea de 10:

6.6 Booleans

Un tip de date boolean este declarat cu cuvântul cheie boolean și poate lua valorile true sau
false:

Valorile booleane sunt utilizate mai ales pentru testarea condiționată, despre care veți afla mai
multe despre un capitol ulterior.

6.7 Characters

Tipul de date char este utilizat pentru a stoca un singur caracter. Caracterul trebuie să fie
înconjurat de ghilimele unice, simple ar fi ‘A’ sau ‘c’:

În mod alternativ, puteți utiliza valori ASCII pentru a afișa anumite caractere:

12

Clasificare BT: Uz Intern


6.8 Strings

Tipul de date String este utilizat pentru a stoca o secvență de caractere (text). Valorile șirului
trebuie să fie înconjurate de ghilimele duble:

Tipul String este atât de folosit și integrat în Java, încât unii îl numesc „tipul special nou”.
Un String în Java este de fapt un tip de date non-primitiv, deoarece se referă la un obiect.
Obiectul String are metode care sunt utilizate pentru a efectua anumite operații cu string-uri.
Nu vă faceți griji dacă nu înțelegeți încă termenul „obiect”. Vom afla mai multe despre string-uri
și obiecte într-un capitol ulterior.

6.9 Non-Primitive Data Types

Tipurile de date non-primitive sunt numite tipuri de referință, deoarece se referă la obiecte.

Principalele diferente intre tipurile de date primitive si non-primitive sunt :

 Tipurile primitive sunt predefinite (deja definite) în Java. Tipurile non-primitive sunt
create de programator și nu sunt definite de Java (cu excepția lui String)..
 Tipurile non-primitive pot fi utilizate pentru a apela metode, pentru a efectua anumite
operatii, în timp ce tipurile primitive nu pot.
 Un tip primitiv are întotdeauna o valoare, în timp ce tipurile non-primitive pot fi null.
 Un tip primitiv începe cu o literă mica, în timp ce tipurile non-primitive începe cu litera
mare.
 Dimensiunea unui tip primitiv depinde de tipul de date, în timp ce tipurile non-primitive
au toate aceeași dimensiune.

Exemple de tipuri non-primitive sunt Strings, Arrays, Classes, Interface, etc.


Veți afla mai multe despre acestea într-un capitol ulterior.

13

Clasificare BT: Uz Intern


7. Java Types Casting
7.1 Java Type Casting
Transformarea de tip este atunci când atribuiți valoarea unui tip de date primitive unui alt tip.
In Java sunt doua tipuri de casting :
 Widening Casting ( automat ) transformarea unui tip mai mic în dimensiune mai mare
byte -> short -> char -> int -> long -> float -> double
 Narrowing Casting ( manual ) transformarea unui tip mai mare într-un tip mai mic
double -> float -> long -> int -> char -> short -> byte
7.2 Widening Casting
Se face automat la trecerea unui tip de dimensiune mai mică la un tip mai mare:

7.3 Narrowing Casting


Trebuie făcută manual prin plasarea tipului in paranteze în fața valorii:

14

Clasificare BT: Uz Intern


8. Java Operators
8.1 Java Operators
Operatorii sunt folosiți pentru a efectua operații cu variabile și valori.
Valoarea se numește operand, în timp ce operația (care trebuie efectuată între cele două
operanțe) este definită de un operator:
Operand Operator Operand
100 + 50

În exemplul de mai jos, numerele 100 și 50 sunt operanzi, iar semnul + este operator.

Deși operatorul + este adesea folosit pentru a adăuga împreună două valori, ca în exemplul de
mai sus, poate fi de asemenea utilizat pentru a adăuga împreună o variabilă și o valoare, sau o
variabilă și o altă variabilă:

Java împarte operatorii în următoarele grupuri:


 Operatori aritmetici
 Operatori de atribuire
 Operatori de comparație
 Operatori logici
 Operatori pe bit

15

Clasificare BT: Uz Intern


8.2 Arithmetic Operators
Operato Nume Descriere Exemplu
r
+ Plus Adauga
doua
valori

// output 8
- Scadere Scade o
valoare
din alta

//output 2
* Multiplicar Multiplica
e doua
valori

//output 15
/ Diviziune Imparte o
valoare la
alta

//output 4
% Coeficient Returneaz
a resutul
diviziunii

//output 1

16

Clasificare BT: Uz Intern


++ Crestere Cresterea
valorii
unei
variabile
cu 1

//output 6
-- Descrestere Descreste
valoarea
unei
variabile
cu 1

//output 4

!!! Atentie
1. Ex
int x = 34 ;
int y = ++x; // output x = 35 ; y = 35

2. Ex :
int x = 34 ;
int y = x++; // output x = 35 ; y = 34

17

Clasificare BT: Uz Intern


8.3 Java Assignment Operators
Operatorii de atribuire sunt folosiți pentru a atribui valori variabilelor.
În exemplul de mai jos, utilizăm operatorul de alocare (=) pentru a atribui valoarea 10 unei
variabile numite x:

Operatorul de atribuire de adăugare (+ =) adaugă o valoare unei variabile:

// output 15 ( x = x + 5 )

Operator Exemplu La fel ca Incearca


= x=5 x=5

// output 5
+= x += 3 x=x+3

//output 8

18

Clasificare BT: Uz Intern


-= x -= 3 x = x- 3

//output 2
*= x *= 3 x=x*3

//output 15
/= x /= 3 x=x/3

//output 1.6666666666666667
%= x %= 3 x=x%3

//output 2
&= x &= 3 x=x&3

//output 1

19

Clasificare BT: Uz Intern


|= x |= 3 x=x|3

//output 7
^= x ^= 3 x=x^3

//output 6
>>= x >>= 3 x = x >> 3

//output 0
<<= x <<= 3 x = x << 3

//output 40

20

Clasificare BT: Uz Intern


8.4 Java Comparison Operators
Operatorii de comparație sunt folosiți pentru a compara două valori:
Operator Nume Exemplu Incearca
== Egal cu x==y

// output false
!= Nu este x != y
egal

// output true
> Mai x>y
mare ca

//output true
< Mai mic x<y
ca

//output false
>= Mai x>=y
mare
sau egal

//output true
<= Mai mic x < = y
sau egal

false 

21

Clasificare BT: Uz Intern


8.5 Java Logical Operators

Operatorii logici sunt folosiți pentru a determina logica între variabile sau valori:

Operato Nume Descriere Exemplu Incearca


r
+ Logical Returneaza x < 5 &&  x < 10
and true daca
ambele
intructiuni
sunt
adevarate
//output true
|| Logical Returneaza x < 5 || x < 4
or true daca
una din
intructiuni
este
adevarata //output true
! Logical Reverseaz
not a !(x < 5 && x < 10)
rezultatul,
returneaza
false daca
rezultatul //output false
este true

22

Clasificare BT: Uz Intern


9. Java Strings
9.1 Java Strings
String-urile sunt utilizate pentru stocarea textului.
O variabilă String conține o colecție de caractere înconjurate de ghilimele duble:
Ex :
Creați o variabilă de tip String și atribuiți-i o valoare:

9.2 String Length


Un String în Java este de fapt un obiect, care conține metode care pot efectua anumite operații
pe string-uri. De exemplu, lungimea unui șir poate fi găsită cu metoda length ():

//output 26
9.3 More String Methods
Există multe metode String disponibile, de exemplu toUpperCase () și toLowerCase ():

23

Clasificare BT: Uz Intern


9.4 Finding a String in a String
Metoda indexOf () returnează indexul (poziția) primei apariții a unui text specificat într-un
String (inclusiv spațiul alb):

!!! Java numără pozițiile de la zero. 0 este prima poziție într-un String, 1 este a doua, 2 este
a treia ...

9.5 String Concatenation


Operatorul + poate fi utilizat între String-uri pentru a le adăuga împreună pentru a crea un
string nou. Aceasta se numeste concatenare

!!! Rețineți că am adăugat un text gol (" ") pentru a crea un spațiu între firstname și lastname la
tipărire.
Puteți utiliza, de asemenea, metoda concat () pentru a concatena două string-uri:

24

Clasificare BT: Uz Intern


9.6 Special Characters
Deoarece string-urile trebuie scrise între ghilimele, Java va înțelege greșit acest string și va
genera o eroare:

Soluția pentru a evita această problemă este folosirea caracterului backslash.


Caracterul backslash (\) transformă caractere speciale în caractere string:

Secvența \" introduce un ghilimele duble într-un string :

Secvența \' introduce un ghilimea simpla într-un string :

Secvența \\ introduce un backslash într-un string :

25

Clasificare BT: Uz Intern


Alte șase secvențe de evacuare sunt valabile în Java:
Cod Rezultat Incearca
\n New Line

//Hello
World !
\r Carriage
Return

//Hello
World !
\t Tab

//Hello World !
\b Backspace

//Helo World !
\f Form
Feed

26

Clasificare BT: Uz Intern


9.7 Adding Numbers and Strings
! ATENTIE
Java folosește operatorul + atât pentru adăugare, cât și pentru concatenare.
Numerele sunt adaugate. String-urile sunt concatenate.

Dacă adăugați două numere, rezultatul va fi un număr:

Dacă adăugați două string-uri, rezultatul va fi o concatenare cu string-uri :

Dacă adăugați un număr și un string, rezultatul va fi o concatenare cu string-uri:

27

Clasificare BT: Uz Intern


10. Java Math
Clasa Java Math are multe metode care vă permit să efectuați sarcini matematice pe numere.
10.1 Math.max(x,y)
Metoda Math.max (x, y) poate fi utilizată pentru a găsi cea mai mare valoare dintre x și y:
Ex :

// output 10

10.2 Math.min(x,y)
Metoda Math.min (x, y) poate fi utilizată pentru a găsi cea mai mica valoare dintre x și y:

// output 5

10.3 Math.sqrt(x)

Metoda Math.sqrt (x) returnează rădăcina pătrată a lui x:

.
// output 8.0

28

Clasificare BT: Uz Intern


10.4 Math.abs(x)
Metoda Math.abs (x) returnează valoarea absolută (pozitivă) a lui x:

//output 4.7

10.5 Math.random()
Metoda Math.random () returnează un număr aleatoriu între 0 (inclusiv) și 1 (exclusiv):

//output 0.34315422412581986

29

Clasificare BT: Uz Intern


11. Java Booleans

11.1 Java Booleans


Foarte des, în programare, veți avea nevoie de un tip de date care poate avea doar una dintre cele
două valori, cum ar fi:
 YES / NO
 ON / OFF
 TRUE / FALSE
Pentru aceasta, Java are un tip de date boolean, care poate lua valorile TRUE sau FALSE.

11.2 Boolean Values


Un tip boolean este declarat cu cuvântul cheie boolean și poate lua valorile true sau false :

Cu toate acestea, este mai comună returnarea valorilor booleane din expresiile booleane, pentru
testarea condiționată (vezi mai jos).

11.3 Boolean Expression


O expresie booleană este o expresie Java care returnează o valoare booleană: true sau false.
Puteți utiliza un operator de comparare, cum ar fi operatorul mai mare decât (>) pentru a afla
dacă o expresie (sau o variabilă) este adevărată:

30

Clasificare BT: Uz Intern


Sau chiar mai ușor :

În exemplele de mai jos, utilizăm operatorul egal cu (= =) pentru a evalua o expresie:

Valoarea booleană a unei expresii stă la baza tuturor comparațiilor și condițiilor Java.
Veți afla mai multe despre condiții în capitolul următor.

31

Clasificare BT: Uz Intern


12. Java If … Else
12.1 Java Conditions and If Statements

Java acceptă condițiile logice obișnuite din matematică:

 Mai puțin de: a <b


 Mai mic sau egal cu: a <= b
 Mai mare decât: a> b
 Mai mare sau egal cu: a> = b
 Egal cu a == b
 Nu este egal cu: a! = B

Puteți utiliza aceste condiții pentru a efectua diferite acțiuni pentru decizii diferite.

Java are următoarele afirmatii condiționale:

 Utilizați IF pentru a specifica un bloc de cod care trebuie executat, dacă o condiție
specificată este adevărată
 Utilizați ELSE pentru a specifica un bloc de cod care trebuie executat, dacă aceeași
condiție este falsă
 Utilizați ELSE IF pentru a specifica o nouă condiție de testat, dacă prima condiție este
falsă
 Utilizați SWITCH pentru a specifica multe blocuri alternative de cod care urmează să fie
executate

32

Clasificare BT: Uz Intern


12.2 The IF Statement
Utilizați instrucțiunea IF pentru a specifica un bloc de cod Java care trebuie executat dacă o
condiție este adevărată.

!!! Retineti ca instructiunea if se scrie cu litere mici. Literele mari ( If sau IF ) vor genera eroare.

În exemplul de mai jos, testăm două valori pentru a afla dacă 20 este mai mare decât 18. Dacă
condiția este adevărată, imprimați un text:

// output : 20 is greater than 1

De asemenea, putem testate variabile :

// output : x is greater than y

Exemplu explicat

În exemplul de mai sus folosim două variabile ( x și y ) pentru a testa dacă x este mai mare decât
y (folosind operator >). Cum x este 20 și y este 18 și știm că 20 este mai mare decât 18,
imprimăm pe ecran că „x este mai mare decât y”.

33

Clasificare BT: Uz Intern


12.3 The ELSE Statement
Utilizați instrucțiunea ELSE pentru a specifica un bloc de cod care urmeaza sa fie executat dacă
condiția este falsă.

Exemplu :

// output : Good evening.

Exemplu explicat

În exemplul de mai sus, time (20) este mai mare decât 18, deci condiția este falsă. Din această
cauză, trecem in conditia de else și printam pe ecran “Good evening”. Dacă time era mai mic de
18, programul ar fi printat „Good day”.

34

Clasificare BT: Uz Intern


12.4 The ELSE IF Statement
Utilizați instrucțiunea else if pentru a specifica o nouă condiție dacă prima condiție este falsă.

Exemplu :

//output : Good evening.

Exemplu explicat :

În exemplul de mai sus, time (22) este mai mare de 10, deci prima condiție este falsă.
Următoarea condiție, în instructiunea else if, este de asemenea falsă, așa că trecem la condiția
else, deoarece condiția1 și condiția2 sunt ambele false - și imprimăm pe ecran “Good evening”.
Cu toate acestea, dacă time era 14, programul nostru ar fi imprimat “Good day”.

35

Clasificare BT: Uz Intern


12.5 Short Hand IF … ELSE ( Ternary Operator )
Dacă aveți o singură instrucțiune de executat, una pentru if și una pentru else, puteți pune totul
pe aceeași linie:

In loc sa se scrie :

// output : Good evening.

Poti scrie mai simplu :

// output : Good evening.

36

Clasificare BT: Uz Intern


13. Java Switch
13.1 Java Switch
Utilizați instrucțiunea switch pentru a selecta unul dintre numeroasele blocuri de cod care
urmează să fie executate.

Asa functioneaza:

 Expresia switch este evaluată o dată.


 Valoarea expresiei este comparată cu valorile fiecărui case.
 Dacă există o potrivire, blocul de cod asociat este executat.
 Cuvintele cheie și break si default sunt opționale și vor fi descrise mai târziu în acest
capitol

37

Clasificare BT: Uz Intern


Exemplul de mai jos folosește numărul zilei din săptămana pentru a calcula numele zilei din
săptămână.

Exemplu :

// output : Thursday

13.2 The break Keyword


Când Java ajunge la un cuvânt cheie break, acesta se desprinde din blocul switch.
Acest lucru va opri executarea mai multor testări de coduri și cazuri din interiorul blocului.
Când se găsește o potrivire și job-ul este terminat, este timpul pentru break. Nu este nevoie de
mai multe teste.

!!! Un break poate economisi mult timp de execuție, deoarece “ignoră” restul de cod din
blocul switch.

38

Clasificare BT: Uz Intern


13.2 The default Keyword
Cuvântul cheie default specifică un anumit cod pentru a rula dacă nu există nicio potrivire de
caz:

//output : Looking forward to the Weekend

!!! Retineti ca daca instructiunea default este folosita ca ultima instructiune intr-un bloc
switch, nu este nevoie de break;

39

Clasificare BT: Uz Intern


14. Java While Loop
14.1 Loops
Loop-urile pot executa un bloc de cod atâta timp cât este atinsă o condiție specificată.

14.2 Java While Loops


Buclele while tin print-un bloc de cod, atat timp cat o conditie specificata este adevarata

În exemplul de mai jos, codul din loop va rula, de mai multe ori, atât timp cât o variabilă (i) este
mai mică de 5:

// output :
0
1
2
3
4
!!! Nu uitați să mariti variabila utilizata în condiție, altfel bucla nu se va termina niciodată!

40

Clasificare BT: Uz Intern


14.3 The Do/While Loop
Bucla Do/While este o varianta a buclei while. Această buclă va executa blocul de cod o dată,
înainte de a verifica dacă condiția este adevărată, atunci va repeta bucla atât timp cât condiția
este adevărată.

Exemplul de mai jos folosește o buclă do / while. Bucla va fi întotdeauna executată cel puțin o
dată, chiar dacă condiția este falsă, deoarece blocul de cod este executat înainte de testarea
condiției:

// output :
0
1
2
3
4
!!! Nu uitați să mariti variabila utilizata în condiție, altfel bucla nu se va termina niciodată!

41

Clasificare BT: Uz Intern


15. Java For Loop
15.1 Java For Loop
Când știți exact de câte ori doriți să treceti cu un loop printr-un bloc de cod, utilizați for loop în
loc de while loop :

Statement 1 : este executată (o singură dată) înainte de execuția blocului de cod.


Statement 2 : definește condiția pentru executarea blocului de cod.
Statement 3 : este executată (de fiecare dată) după executarea blocului de cod.

Exemplul de mai jos va tipări numerele de la 0 până la 4:

// output :
0
1
2
3
4
Exemplu Explicat

Statement 1 : stabilește o variabilă înainte ca bucla sa porneasca (int i = 0).


Statement 2 : definește condiția ca bucla sa ruleze (trebuie să fie mai mică de 5). Dacă conditia
este adevărată, bucla va începe din nou, dacă este falsă, bucla se va încheia.
Statement 3 : mareste o valoare (i ++) de fiecare dată când blocul de cod din buclă a fost
executat.

42

Clasificare BT: Uz Intern


Alt Exemplu :
Acest exemplu va printa doar valori între 0 și 10:

// output :
0
2
4
6
8
10

15.2 For-Each Loop


Există, de asemenea, o buclă "for-each", care este utilizată exclusiv pentru a bucla elementele
dintr-un array :

Următorul exemplu scoate toate elementele din array-ul cars, utilizand bucla “for-each” :

43

Clasificare BT: Uz Intern


Exemplu :

// output :
Volvo
BMW
Ford
Mazda

Notă: Nu vă faceți griji dacă nu înțelegeți exemplul de mai sus. Veți afla mai multe despre
Arrayuri în capitolul Arrayuri Java.

44

Clasificare BT: Uz Intern


16. Java Break and Continue
16.1 Java Break
Ați văzut deja instrucțiunea break folosită într-un capitol anterior al acestui tutorial. Acesta a
fost folosita pentru a „sări” dintr-o declarație switch.
Instrucțiunea break poate fi de asemenea folosită pentru a sari dintr-o buclă.
Acest exemplu sare din buclă atunci când i este egal cu 4:

//output : 0 1 2 3

16.2 Java Continue


Instrucțiunea continue rupe o iterație (în buclă), dacă apare o condiție specificată și continuă cu
iterația următoare în buclă.
Urmatorul exemplu omite valoarea 4 :

//output : 0 1 2 3 5 6 7 8 9

16.3 Break and Continue in While Loop


45

Clasificare BT: Uz Intern


Puteti de asemenea sa utilizati Break si Continue in buclele While

Exemplu Break :

//output : 0 1 2 3

Exemplu Continue :

//output : 0 1 2 3 5 6 7 8 9

17. Java Arrays

46

Clasificare BT: Uz Intern


17.1 Java Arrays
Array-urile sunt utilizate pentru a stoca mai multe valori într-o singură variabilă, în loc să declare
variabile separate pentru fiecare valoare.
Pentru a declara un array (tablou),definiti tipul variabilei cu paranteze patrate

Am declarat o variabilă care contine un array de string-uri. Pentru a insera valori, putem folosi
un array literal - așezați valorile într-o listă separată de virgule, în interiorul acoladelor :

Pentru a crea un array cu numere intregi :

17.2 Access the Elements of an Array


Puteti acesa un element al array-ului facand referire la numarul de index.
Urmatoarea declarație accesează valoarea primului element din array-ul cars :

Exemplu :

// output : Volvo

!!! Nota : Indicii Array-ului incep cu 0 : [0] este primul element, [1] este al doilea element.

17.3 Change an Array Element

47

Clasificare BT: Uz Intern


Pentru a modifica valoarea unui anumit element, referitiva la numărul de index:

// output : Opel

17.4 Array Length


Pentru a afla câte elemente are un array, utilizați proprietatea length:

//output : 4

17.5 Loop Through an Array


Puteți face buclă prin elementele array-ului cu bucla for, și puteți folosi proprietatea length
pentru a specifica de câte ori ar trebui să ruleze bucla.
Urmatorul exemplu afiseaza toate elementele din array-ul cars :

48

Clasificare BT: Uz Intern


// output :
Volvo
BMW
Ford
Mazda

17.6 Loop Through an Array with For-Each


Există, de asemenea, o buclă "for-each", care este utilizată exclusiv pentru a bucla elementele
din array :

Următorul exemplu afiseaza toate elementele din array-ul cars, folosind o buclă "for-each":

//output :
Volvo
BMW
Ford
Mazda

49

Clasificare BT: Uz Intern


Exemplul de mai sus poate fi citit astfel: pentru fiecare element String (numit i - ca în index) în
cars, printati valoarea i.
Dacă comparați bucla for și bucla for-each, veți vedea că metoda for-each este mai ușor de
scris, nu necesită contor (folosind proprietatealength) și este mult mai citibila.

17.7 Multidimensional Arrays


Un array multidimensional este un array care contine unul sau mai multe array-uri
Pentru a crea un array bidimensional, adaugati fiecare array in cadrul propriului sau set de
acolade.

myNumbers este acum un array cu două array-uri ca elemente.


Pentru a accesa elementele array-ului myNumbers, specificați doi indexi: unul pentru
array și unul pentru elementul din interiorul array-ului respectiv.
Urmatorul exemplu accesează cel de-al treilea element (2) din al doilea array (1) din
myNumbers:

//output : 7
Putem folosi, de asemenea, o buclă for în interiorul altei bucle for pentru a obține elementele
unui array bidimensional (mai trebuie să indicăm cei doi indexi):

// output : 1 2 3 4 5 6 7

50

Clasificare BT: Uz Intern


18. Java Exceptions – Try … Catch
18.1 Java Exceptions
Atunci când executați cod Java, pot apărea diferite erori: erori de codare făcute de programator,
erori datorate introducerii greșite sau alte lucruri neprevăzute.
Când apare o eroare, în mod normal, Java se va opri și va genera un mesaj de eroare. Termenul
tehnic pentru aceasta este: Java va arunca o excepție (aruncă o eroare).

18.2 Java try and catch


Instrucțiunea try vă permite să definiți un bloc de cod care trebuie testat pentru erori în timpul
executării.
Instrucțiunea catch vă permite să definiți un bloc de cod care trebuie executat, dacă apare o
eroare în blocul try.
Cuvinetele cheie try si catch vin in perechi :

Se considera urmatorul exemplu :


Acesta va genera o eroare, deoarece myNumbers[10] nu exista.

Rezultatul va fi ceva de genul:

51

Clasificare BT: Uz Intern


Dacă apare o eroare, putem folosi try ... catch pentru a prinde eroarea și a executa unele coduri
pentru a o gestiona:
Exemplu :

//output : Something went wrong.

18.3 Finally
Declaratia finally va permite sa executati cod, dupa try…catch, indiferent de rezultat.

//output :

Something went wrong.


The 'try catch' is finished.

52

Clasificare BT: Uz Intern


18.4 The throw keyword

Instrucțiunea throw vă permite să creați o eroare personalizată.


Instrucțiunea throw este utilizată împreună cu un tip de excepție. Există multe tipuri de excepții
disponibile în Java: ArithmeticException, FileNotFoundException,
ArrayIndexOutOfBoundsException, SecurityException etc.

!!! Tipul de excepție este adesea utilizat împreună cu o metodă personalizată. Nu vă faceți griji
dacă nu înțelegeți exemplul de mai jos, veți afla mai multe despre metodele din capitolul
următor:

Exemplu :

Aruncați o excepție dacă vârsta este sub 18 ani (imprimați “Access denied”). Dacă vârsta are 18
ani sau mai mare, imprimați “Access granted”:

// output:

Daca age era 20, nu mai primesti o exceptie

// output: Access granted - You are old enough!

53

Clasificare BT: Uz Intern


19. Java Methods
O metodă este un bloc de cod care se execută numai atunci când este apelata.
Puteți pasa date, ca si parametri, într-o metodă.
Metodele sunt utilizate pentru a efectua anumite acțiuni și sunt cunoscute și sub denumirea de
funcții.
De ce să folosesc metode? Pentru a reutiliza codul: definiți codul o dată și folosiți-l de mai multe
ori.

19.1 Create a Method


O metodă trebuie declarată în cadrul unei clase. Este definit cu numele metodei, urmat de
paranteze ( ). Java oferă câteva metode predefinite, cum ar fi System.out.println ( ), dar puteți
crea, de asemenea, propriile metode pentru a efectua anumite acțiuni:
Exemplu :
Creati o metoda inauntrul clasei MyClass :

Exemplu explicat :
 myMethod ( ) este numele metodei.
 static înseamnă că metoda aparține clasei MyClass și nu unui obiect al clasei MyClass.
Veți afla mai multe despre obiecte și cum să accesați metodele prin intermediul
obiectelor mai târziu în acest tutorial.
 void inseamna ca aceasta metoda nu are valoare de retur. Veți afla mai multe despre
valorile de retur ulterior în acest capitol

19.2 Call a Method


Pentru a apela o metodă în Java, scrieți numele metodei urmată de două paranteze () și puct si
virgule ;
În următorul exemplu, myMethod () este utilizat pentru a tipări un text (acțiunea), atunci când
este apelat :

54

Clasificare BT: Uz Intern


Exemplu :

Inauntrul lui main, apelati metoda myMethod ( ) :

// Outputs : I just got executed!

O metoda poate sa fie apelata de mai multe ori :

// Outputs :

I just got executed!


I just got executed!
I just got executed!

19.3 Method Parameters


Informatia poate fi transmisa funcțiilor ca parametru. Parametrii acționează ca variabile în
interiorul metodei.
Parametrii sunt specificați după numele metodei, în interiorul parantezelor. Puteți adăuga cât de
mulți parametri doriți, doar ca trebuie separati prin virgula.
Următorul exemplu are o metodă care ia ca parametru un String numită fname. Când metoda
este apelata, introducem numele, care este utilizat în interiorul metodei pentru a tipări numele
complet:

55

Clasificare BT: Uz Intern


Exemplu :

//output :

Liam Refsnes
Jenny Refsnes
Anja Refsnes

19.4 Return Values


Cuvântul cheie void, utilizat în exemplele de mai sus, indică faptul că metoda nu ar trebui să
returneze o valoare.
Dacă doriți ca metoda să returneze o valoare, puteți utiliza un tip de date primitiv (cum ar fi int,
char etc.) în loc de void și puteți utiliza cuvântul cheie return din interiorul metodei:

Exemplu :

//output : 8

Urmatorul exemplu returneaza suma celor 2 paramentruu ai metodei :


56

Clasificare BT: Uz Intern


//output : 8

Puteti de asemenea sa stocati rezultatul intro variabila ( recomandat )

//output : 8

19.5 A Method with If … Else

57

Clasificare BT: Uz Intern


Este obisnuit sa se utilizeze declaratia if … else in cadrul metodelor

//output : Access granted - You are old enough!

Capitolul II
58

Clasificare BT: Uz Intern


20. Java Classes/Objects

Java este un limbaj de programare orientat pe obiecte.


Totul în Java este asociat cu clase și obiecte, împreună cu atributele și metodele sale. De
exemplu: în viața reală, o mașină este un obiect. Mașina are atribute, cum ar fi greutatea și
culoarea, și metode, precum condusul și franarea.
O clasă este ca un constructor de obiecte sau un “model” pentru crearea obiectelor.

20.1 Create a Class


Pentru a crea o clasa utilizati cuvantul cheie class:
MyClass.Java

Creati o clasa numita “MyClass” cu variabila x:

!!! Reamintitiva de la capitolul sintaxa Java că o clasă ar trebui să înceapă întotdeauna cu


o literă mare ca majuscula și că numele fișierului java ar trebui să se potrivească cu numele
clasei.

20.1 Create an Object


În Java, un obiect este creat dintr-o clasă. Am creat deja clasa numită MyClass, așa că acum o
putem folosi pe aceasta pentru a crea obiecte.
Pentru a crea un obiect al MyClass, specificați numele clasei, urmat de numele obiectului și
utilizați cuvântul cheie new:

Exemplu :

Creati un obiect numit “myObj” si printati valoarea lui x :

// output : 5
20.2 Multiple Objects
Puteți crea mai multe obiecte dintr-o clasă:

59

Clasificare BT: Uz Intern


Exemplu :
Creati doua obiecte in clasa MyClass :

//output :
5
5
20.3 Using Multiple Classes
Puteți crea, de asemenea, un obiect al unei clase și accesați-l într-o altă clasă. Aceasta este adesea
folosită pentru o mai bună organizare a claselor (o clasă are toate atributele și metodele, în timp
ce cealaltă clasă deține metoda main () (codul care trebuie executat)).
Nu uitați că numele fișierului java ar trebui să se potrivească cu numele clasei. În acest exemplu,
am creat două fișiere în același director / folder:

 MyClass.java
 OtherClass.java

60

Clasificare BT: Uz Intern


Când ambele fișiere au fost compilate:

Rulati fisierul OtherClass.java :

// Output – ul o sa fie :

Veți afla mult mai multe despre clase și obiecte în capitolele următoare.

61

Clasificare BT: Uz Intern


21. Java Class Attributes

21.1 Java Class Atrributes


În capitolul precedent, am folosit termenul “variabilă” pentru x în exemplu (așa cum se arată mai
jos). Este de fapt un atribut al clasei. Sau puteți spune că atributele clasei sunt variabile dintr-o
clasă:
Example :
Creati o clasa “MyClass” cu doua atribute : x si y

!!! Un alt termen pentru atributele clasei este câmpurile.

21.2 Accessing Atrributes


Puteți accesa atribute creând un obiect al clasei și folosind sintaxa punctului (.):
Următorul exemplu va crea un obiect al clasei MyClass, cu numele myObj. Folosim atributul x
de pe obiect pentru a tipări valoarea acestuia:

Exemplu :
Creati un obiect pe nume “myObj” si printati valoarea lui x :

// output : 5

62

Clasificare BT: Uz Intern


21.3 Modify Attributes

De asemenea, puteți modifica valorile atributelor:


Exemplu :
Setati valoarea lui x de 40 :

//output : 40
Sau sa inlocuiti valorile existente :

//output : 25
Daca nu vreti abilitatea de a inlocuii valoarea existent, declarati atributul ca final :
Exemplu :

63

Clasificare BT: Uz Intern


//output :

Cuvântul cheie final este util atunci când doriți ca o variabilă să stocheze întotdeauna aceeași
valoare, cum ar fi PI (3.14159 ...).
Cuvântul cheie final se numește „modificator”. Veți afla mai multe despre acestea în capitolul
modificatori Java.

21.4 Multiple Objects


Dacă creați mai multe obiecte dintr-o clasă, puteți modifica valorile atributului într-un obiect,
fără a afecta valorile atributului în cealaltă:
Exemplu :
Schimbati valoarea lui x in 25 pentru myObj2, si lasati valoarea lui x in myObj1 neschimbata:

//output :
5
25

64

Clasificare BT: Uz Intern


21.5 Multiple Objects
Puteti sa specificati cat de multe attribute doriti :
Exemplu :

// output :

Name: John Doe


Age: 24

!!! Capitolul următor vă va învăța cum să creați metode de clasă și cum să le accesați cu
obiecte.

65

Clasificare BT: Uz Intern


22. Java Class Methods

22.1 Java Class Methods


Veti invata din capitolul Metode Java că metodele sunt declarate în cadrul unei clase și că sunt
utilizate pentru a efectua anumite acțiuni:

Exemplu :

Creati o metoda numita myMethod() in MyClass :

myMethod() tipareste un text (actiunea), cand este apelata. Pentru a apela o metodă, scrieți
numele metodei urmată de două paranteze () impreuna cu punct si virgula ;

Exemplu :

Inauntrul lui main, apelati metoda myMethod() :

//output : Hello World !

66

Clasificare BT: Uz Intern


22.2 Static or Public
Deseori ai vazut programe Java care au atribute si metode statice sau publice
În exemplul de mai jos, am creat o metodă static, ceea ce înseamnă că poate fi accesată fără a
crea un obiect al clasei, spre deosebire de public, care poate fi accesat doar de obiecte:

Exemplu :

Un exemplu pentru a demonstra diferenta dintre metode static si public :

//output :

Static methods can be called without creating objects


Public methods must be called by creating objects

Notă: Veți afla mai multe despre aceste cuvinte cheie (numite modificatori) în capitolul
Modificatori Java.

67

Clasificare BT: Uz Intern


22.3 Acess Methods With an Object
Exemplu :
Creati un obiect Car numit myCar. Apelati metodele fullThrottle() si speed() pe obiectul
myCar si rulati programul :

// output :

The car is going as fast as it can!


Max speed is: 200

Exemplu explicat :

1) Am creat o clasa personalizata Car cu cuvantul cheie class.


2) Am creat metodele fullThrottle() si speed() in clasa Car.
3) Metoda fullThrottle() si metoda speed() vor printa ceva text, cand sunt apelate.
4) Metoda speed() accepta un paramentru int numit maxSpeed, vom folosi acest lucru in 8)
5) Pentru a utiliza clasa Car si metodele ei, trebuie sa cream un obiect al clasei Car.
6) Apoi, mergeți la metoda main (), despre care știți că este o metodă Java încorporată care
rulează programul dvs. (orice cod din interiorul lui main este executat).
7) Utilizant cuvantul cheie new am creat un obiect al clasei Car cu numele myCar.

68

Clasificare BT: Uz Intern


8) Apoi, apelam metodele fullThrottle() si speed() pe obiectul myCar, si rulam programul
utilizand numele obiectului ( myCar ), urmat de punct ( . ) , urmat de numele metodei
( fullThrottle( ); si speed( 200 ); ) . Observati ca am adaugat un parametru int de 200 in
metoda speed() .

Sa nu uiti asta..

Punctul (.) este utilizat pentru a accesa atributele și metodele obiectului.


Pentru a apela o metoda in Java, scrieti numele metodei urmat de un set de paranteze ( ), urmat
de puct si virgule ( ; )
O clasa trebuie sa se potriveasca cu filename-ul ( Car si Car.java ).

22.4 Using Multiple Classes


Așa cum am specificat în capitolul Clase, este o practică bună să creăm un obiect al unei clase și
să îl accesăm într-o altă clasă.
Nu uitați că numele fișierului java ar trebui să se potrivească cu numele clasei.
În acest exemplu, am creat două fișiere în același director :

 Car.java
 OtherClass.java

Car.java

69

Clasificare BT: Uz Intern


OtherClass.java

Când ambele fișiere au fost compilate:

Executați fișierul OtherClass.java:

//output :

The car is going as fast as it can!


Max speed is: 200

70

Clasificare BT: Uz Intern


23. Java Constructors

23.1 Java Class Methods


Java Constructors

Un constructor în Java este o metodă specială care este folosită pentru inițializarea obiectelor.
Constructorul este apelat atunci când este creat un obiect al unei clase. Poate fi utilizat pentru a
seta valori inițiale pentru atributele obiectului:

Exemplu :

Creati un contructor :

//output : 5

!!! ATENTIE

Rețineți că numele constructorului trebuie să se potrivească cu numele clasei și nu poate avea


un tip return ( ca void ).
De asemenea, retineti ca constructorul este apelat cand obiectul este creat.
Toate clasele au constructori în mod implicit: dacă nu creezi singur un constructor de clasă, Java
creează unul pentru tine. Cu toate acestea, atunci nu puteți seta valori inițiale pentru atributele
obiectului.

71

Clasificare BT: Uz Intern


23.2 Constructor Parameters
Constructorii pot lua, de asemenea, parametri, care este utilizat pentru inițializarea atributelor.
Următorul exemplu adaugă un parametru int y la constructor. În interiorul constructorului am
setat x la y (x = y). Când apelăm constructor, pasam un parametru constructorului (5), care va
seta valoarea lui x la 5:
Exemplu :

//output : 5

Putem sa avem cati parametrii dorim:

//output : 1969 Mustang

72

Clasificare BT: Uz Intern


24. Java Modifiers

24.1 Modifiers
Acum, sunteți destul de familiar cu cuvântul cheie public care apare în aproape toate exemplele
noastre:

Cuvântul cheie public este un modificator de acces, ceea ce înseamnă că seteaza un nivel de
aceess pentru clase, atribute, metode și constructori.
Impartim modificatorii in doua grupe :

 Access Modifiers – controleaza nivelul de acess


 Non-Acess Modifiers – nu controleaza nivelul de acess dar furnizeaza alta
functionalitate

24.2 Access Modifiers


Pentru clase, puteți utiliza public sau default :

Modificato Descriere Incercati


r
public Clasa este acesibila
de orice alta clasa

// output
Hello World
default Clasa este accesibilă
numai de clase din
același pachet. Acest
lucru este utilizat
atunci când nu
specificați un
modificator. Veți afla // output
mai multe despre Hello World
pachete în capitolul
pachete

73

Clasificare BT: Uz Intern


Pentru atribute,metode si constructori, puteți utiliza una din urmatoarele :

Modificator Descriere Incercati


public Codul este
accesibil
pentru toate
clasele

//output :
C:\Users\Name\java MyClass
Name: John Doe
Email: john@doe.com
Age: 24

private Codul este


accesibil
numai în
cadrul
clasei
declarate

//output :
Name: John Doe
Email: john@doe.com
Age: 24

74

Clasificare BT: Uz Intern


default Codul este
accesibil
numai în
același
pachet.
Acest lucru
este utilizat
atunci când
nu
specificați
un //output :
modificator Name: John Doe
. Veți afla Email: john@doe.com
mai multe Age: 24
despre
pachete în
capitolul
pachete
protected Codul este
accesibil în
același
pachet și
subclase.
Veți afla
mai multe
despre
subclase și
superclase
în capitolul
Moștenire

//output :
Name: John Doe
Email: john@doe.com
Age: 24
Graduation Year: 2018

75

Clasificare BT: Uz Intern


24.3 Non - Access Modifiers

Pentru clase, puteti sa folositi fie final sau abstract :

Modificator Descriere Incercati


final Clasa nu
poate fi
moștenită
de alte
clase

// output
Hello World
abstract Clasa nu
poate fi
folosită
pentru a
crea
obiecte
(Pentru a
accesa o
clasă
abstractă,
aceasta
trebuie
moștenită
de la o
altă
clasă.)

76

Clasificare BT: Uz Intern


//output :
C:\Users\Name\java MyClass
Name: John Doe
Email: john@doe.com
Age: 24
Graduation Year: 2018
Studying all day long

Pentru attribute si metode puteți utiliza una dintre următoarele:

Modificator Descriere
final Atributele si metodele nu pot fi suprascrire / modificate
static Atributele și metodele aparțin clasei, mai degrabă decât unui obiect
abstract Poate fi utilizat doar într-o clasă abstractă și poate fi utilizat numai pe
metode. Metoda nu are corp, de exemplu abstract void run ();Corpul este
furnizat de subclase (moștenit de la). Veți afla mai multe despre moștenire
în capitolul Moștenire
transient Atributele si metodele sunt omise cand serializam obiectul care le contine.
synchronized Metodele pot fi accesate de un singur fir la timp
volatile Valoarea unui atribut nu este plasată în cache în mod local și este
întotdeauna citită din „memoria principală”

24.4 Final
Dacă nu doriți abilitatea de a suprascrie valorile atributelor existente, declarați atributele ca final:

// output :

MyClass.java:7: error: cannot assign a value to final variable x


    myObj.x = 50;
         ^
MyClass.java:8: error: cannot assign a value to final variable PI
    myObj.PI = 25;
         ^ 2 errors

77

Clasificare BT: Uz Intern


24.5 Static
O metodă statică înseamnă că poate fi accesată fără a crea un obiect al clasei, spre deosebire de
public:

Exemplu :
Un exemplu pentru a demonstra diferențele dintre metodele statice și cele publice:

//output :

Static methods can be called without creating objects


Public methods must be called by creating objects

78

Clasificare BT: Uz Intern


25. Java Encapsulation

25.1 Encapsulation
Sensul încapsulării este să vă asigurați că datele “sensibile” sunt ascunse utilizatorilor. Pentru a
realiza acest lucru, trebuie sa :

 declarați variabile / atribute de clasă ca private (accesibile doar în cadrul aceleiași clase)
 furnizați metode setter și getter publice pentru a accesa și actualiza valoarea unei
variabile private

25.2 Get and Set


Ați aflat din capitolul anterior că variabilele private pot fi accesate doar în cadrul aceleiași clase
(o clasă din afară nu are acces la ea).
Cu toate acestea, este posibil să le accesăm dacă furnizăm metodele publice getter și setter.
Metoda get returneaza valuarea variabilei si metoda set seteaza valoarea.
Sintaxa pentru ambele constă în faptul că încep cu get sau set, urmată de numele variabilei, cu
prima literă în majuscule:

Exemplu :

79

Clasificare BT: Uz Intern


Exemplu explicat :

Metoda get returnează valoarea variabilei name.


Metoda set preia un parametru (newName) si il atribuie variabilei name. Cuvantul cheie this
este utilizat pentru a face referire la obiectul current.
Cu toate acestea, intrucat variabila name este declarata ca private, nu o putem accesa din afara
acestei clase.

//output :

MyClass.java:4: error: name has private access in Person


    myObj.name = "John";
         ^
MyClass.java:5: error: name has private access in Person
    System.out.println(myObj.name);
                  ^
2 errors

Daca variabila era declarata ca public, ne-am fi asteptat la urmatorul output :

80

Clasificare BT: Uz Intern


Cu toate acestea, pe masura ce incercam sa aceesam o variabila private, primim o eroare :

In schimb, folosim metodele getName () si setName () pentru a accesa si actualize variabila :

// output :

C:\Users\Name\java MyClass
John

81

Clasificare BT: Uz Intern


De ce încapsulare?

 Un control mai bun al atributelor și metodelor clasei


 Variabilele de clasă pot fi făcute read-only (dacă omiteți metoda set), sau write-only
(dacă omiteți metoda get)
 Flexibil: programatorul poate schimba o parte a codului fără a afecta alte părți
 Securitate crescută a datelor

82

Clasificare BT: Uz Intern


26. Java Packages

26.1 Java Packages & API


Un pachet în Java este utilizat pentru a grupa clase legate. Gândiți-vă la el ca la un folder dintr-
un director de fișiere. Folosim pachete pentru a evita conflictele de nume și pentru a scrie un cod
mai bun de întreținut.
Pachetele sunt împărțite în două categorii:
 Built-in Packages (pachete din API-ul Java)
 User-defined Packages (creați-vă pachetele proprii)

26.2 Built-in Packages


API Java este o bibliotecă de clase pre-scrise, care sunt gratuite de utilizat, incluse în Java
Development Environment. Biblioteca conține componente pentru gestionarea imput-ului, a
programării bazelor de date și multe altele. Lista completa poate fi gasit pe website –ul Oracle :
https://docs.oracle.com/javase/8/docs/api/.
Biblioteca este împărțită în pachete și clase. Adică puteți importa o singură clasă (împreună cu
metodele și atributele sale), sau un pachet întreg care conține toate clasele care aparțin pachetului
specificat.
Pentru a utiliza o clasă sau un pachet din bibliotecă, trebuie să utilizați cuvântul cheie import:

Sintaxa

26.3 Import a Class


Dacă găsiți o clasă pe care doriți să o folositi, de exemplu clasa Scanner, care este utilizată
pentru a obține ce introduce utilizatorului, scrieți următorul cod:
Exemplu :

In exemplu de mai sus, java.util este pachetul, in timp ce Scanner este clasa din pachetul
java.util
Pentru a utiliza clasa Scanner, creați un obiect al clasei și utilizați oricare dintre metodele
disponibile găsite în documentația clasei Scanner. În exemplul nostru, vom folosi metoda
nextLine (), care este folosită pentru a citi o linie completă:

83

Clasificare BT: Uz Intern


Exemplu :
Utilizand clasa Scanner pentru a prinde imput –ul utilizatorului :

// output :

84

Clasificare BT: Uz Intern


26.4 Import a Package
Există multe pachete din care să alegeți. În exemplul anterior, am folosit clasa Scanner din
pachetul java.util.
Acest pachet conține, de asemenea, facilități pentru data și ora, generatorul de numere aleatorii și
alte clase de utilități.
Pentru a importa un pachet întreg, încheiați propoziția cu un semn de asterisc (*). Următorul
exemplu va importa TOATE clasele din pachetul java.util:

Exemplu :

26.5 User – defined Packages


Pentru a crea propriul pachet, trebuie să înțelegeți că Java folosește un director pentru sistemul
de fișiere pentru a le stoca. La fel ca folderele de pe computer:

Exemplu :

Pentru a crea un pachet, utilizati cuvantul cheie package

85

Clasificare BT: Uz Intern


MyPackageClass.java

//output

This is my package!

Salveaza fisierul ca MyPackageClass.Java, si compilatil :

Apoi compilati pachetul :

Acest lucru obligă compilatorul să creeze pachetul „mypack”. Cuvântul cheie -d specifică
destinația unde să salveze fișierul de clasă. Puteți utiliza orice nume de director, cum ar fi
C: / user (Windows) sau, dacă doriți să păstrați pachetul în același director, puteți utiliza semnul
punct ".", Ca în exemplul de mai sus.

Notă: Numele pachetului trebuie scris cu minuscule pentru a evita conflictul cu numele de clasă.

Când am compilat pachetul din exemplul de mai sus, a fost creat un nou folder, numit „mypack”.

Pentru a rula fisierul MyPackageClass.java, scrieti urmatoarele :

Output-ul o sa fie :

86

Clasificare BT: Uz Intern


27. Java Inheritance

27.1 Java Inheritance ( Subclass and Superclass )


În Java, este posibil să moștenim atribute și metode de la o clasă la alta. Grupam “conceptul de
mostenire” in doua categorii :
 Subclass ( copilul ) - clasa care moștenește de la o altă clasă
 Superclass ( parintele ) – clasa care este mostenita
Pentru a mosteni o clasa, utilizati cuvantul cheie extends.
In exemplu de mai jos, clasa Car (subclasa) mosteneste atributele si metodele clasei Vehicle
(superclass).

Exemplu :

//output :

Tuut, tuut!
Ford Mustang

87

Clasificare BT: Uz Intern


Ați observat modificatorul protected din clasa Vehicle ?

Am setat atributul brand in clasa Vehicle ca modificator de acess protected. Daca era setat ca
private, clasa Car nu era disponibila sa il aceseze.

De ce și când se folosește „Moștenirea” ?

Este util pentru reutilizarea codului: reutilizarea atributelor și metodelor unei clase existente
atunci când creați o clasă nouă.

88

Clasificare BT: Uz Intern


28. Java Polymorphism

28.1 Java Polymorphism


Polimorfismul înseamnă „multe forme” și apare atunci când avem multe clase care sunt legate
între ele prin moștenire.
Așa cum am specificat în capitolul precedent; Moștenirea ne permite să moștenim atribute și
metode de la o altă clasă. Polimorfismul folosește acele metode pentru a efectua diferite task-uri.
Aceasta ne permite să executăm o singură acțiune în moduri diferite.

De exemplu, gândiți-vă la o superclasă numită Animal care are o metodă numită


animalSound(). Subclasele clasei Animal pot fi Pigs,Cats,Dogs,Birds - si au, de asemenea,
implementarea proprie a unui sunet de animale (porcii guita, si pisicine miauna ,etc )

Exemplu :

!!! Amintiți-vă de la capitolul Moștenire că folosim cuvântul cheie extends pentru a moșteni o
clasă.

Acum putem crea obiectele Pig si Dog si sa apelam metoda animalSound() pe ambele :

89

Clasificare BT: Uz Intern


Exemplu :

//output :

The animal makes a sound


The pig says: wee wee
The dog says: bow wow

De ce și când se folosește „Moștenirea” și „Polimorfismul”?

Este util pentru reutilizarea codului: reutilizarea atributelor și metodelor unei clase existente
atunci când creați o clasă nouă.

90

Clasificare BT: Uz Intern


29. Java Inner Classes

29.1 Java Inner Classes


În Java, este posibil și cuibarea claselor (o clasă din cadrul unei clase). Scopul claselor cuibărite
este de a grupa clase care aparțin impreuna, ceea ce face ca codul dvs. să fie mai vizibil și mai
ușor de menținut.

Pentru a acesa o clasa inner, create un obiect in alta clasa, si apoi creati un obiect in clasa inner :

Exemplu :

//output : 15 ( 5 + 10 )

91

Clasificare BT: Uz Intern


29.2 Private Inner Classes
Spre deosebire de o clasă „obișnuită”, o clasă inner poate fi private sau protected. Dacă nu
doriți ca obiectele exterioare să acceseze clasa inner, declarați clasa ca fiind privat:
Exemple :

Dacă încercați să accesați o clasă private inner dintr-o clasă exterioară (MyMainClass), apare o
eroare:
// output :
MyMainClass.java:12: error: OuterClass.InnerClass has private access in OuterClass
    OuterClass.InnerClass myInner = myOuter.new InnerClass();
              ^

92

Clasificare BT: Uz Intern


29.3 Static Inner Classes
O clasă inner poate fi de asemenea static, ceea ce înseamnă că o puteți accesa fără a crea un
obiect al clasei exterioare:

Exemple :

//output : 5

Notă: la fel ca atributele și metodele statice, o clasă inner static nu are acces la membrii clasei
exterioare.

93

Clasificare BT: Uz Intern


29.4 Access Other Class From Inner Class
Un avantaj al claselor inner este acela că pot accesa atribute și metode ale clasei externe:

Exemplu :

//output : 10

94

Clasificare BT: Uz Intern


30. Java Abstraction

30.1 Java Abstrac Class and Methods


Data abstraction este procesul de a ascunde anumite detalii și de a afișa utilizatorului doar
informații esențiale. Abstracția se poate realiza fie cu clase abstracte, fie cu interfețe (despre care
veți afla mai multe despre capitolul următor).
Cuvântul cheie abstract este un modificator non-acces, utilizat pentru clase și metode:
 Abstract class : este o clasă restrânsă care nu poate fi folosită pentru a crea
obiecte (pentru a accesa, ea trebuie moștenită de la o altă clasă).
 Abstract method : poate fi folosit doar într-o clasă abstractă și nu are corp.
Corpul este furnizat de subclase (moștenit de la).

O clasă abstractă poate avea atât metode abstracte cât și obisnuite :

Din exemplul de mai sus, nu este posibil să se creeze un obiect din clasa Animal:

Pentru a accesa clasa abstractă, aceasta trebuie moștenită de la o altă clasă.


Să convertim clasa Animal pe care am folosit-o la capitolul Polimorfism într-o clasă abstractă:

Amintiți-vă de la capitolul Moștenire că folosim cuvântul cheie extense pentru a moșteni de la o


clasă.

95

Clasificare BT: Uz Intern


Exemplu :

// output :

The pig says: wee wee


Zzz

De ce și când să folosești clase și metode abstracte?

Pentru a obține securitatea - ascundeți anumite detalii și arătați doar detaliile importante ale unui
obiect.

96

Clasificare BT: Uz Intern


Notă: Abstracția se poate realiza și cu Interfețe, despre care veți afla mai multe despre capitolul
următor.

31. Java Interface

31.1 Java Interface


Un alt mod de a realiza abstractizarea în Java este cu interfețele.
O interfață este o „clasă abstractă” completă care este folosită pentru a grupa metodele înrudite
cu corpurile goale:

Exemplu :

Pentru a accesa metodele de interfață, interfața trebuie să fie „implementată” (cum ar fi


moștenită) de o altă clasă cu cuvântul cheie implements (în loc de extends).

97

Clasificare BT: Uz Intern


//output
The pig says: wee wee
Zzz
Note despre interfețe:

 La fel ca clasele abstracte, interfețele nu pot fi utilizate pentru a crea obiecte (în
exemplul de mai sus, nu este posibil să se creeze un obiect „Animal” în MyMainClass)
 Metodele de interfață nu au un corp - corpul este furnizat prin “implementarea” clasei
 La implementarea unei interfețe, trebuie să suprascrieti toate metodele sale
 Metodele de interfață sunt în mod implicit abtract și public
 Atributele interfeței sunt implicit public, static și final
 interfață nu poate conține un constructor (deoarece nu poate fi utilizată pentru a crea
obiecte)

De ce și când să folosiți interfețe?

1. Pentru a obține securitatea - ascundeți anumite detalii și afișați doar detaliile importante
ale unui obiect (interfață).
2. Java nu acceptă „moștenirea multiplă” (o clasă se ccpoate moșteni doar de la o
superclasă).
Cu toate acestea, se poate realiza cu interfețe, deoarece clasa poate implementa mai multe
interfețe. Notă: Pentru a implementa mai multe interfețe, separați-le cu virgulă (a se
vedea exemplul de mai jos).

98

Clasificare BT: Uz Intern


31.2 Multiple Interface
Pentru a implementa multiple interfete, separate-le prin virgule :

// output :
Some text...
Some other text...

99

Clasificare BT: Uz Intern


32. Java Enums

32.1 Java Enums


Un enum este o clasa speciala ce reprezinta un grup de constante (variabile neschimbate,
precum variabila final ).
Pentru a crea un enum, folositi cuvantul cheie enum ( in loc de class sau interface ) si separate
constantele cu virgule. Rețineți că acestea trebuie să fie cu litere mari:

Exemplu :

Puteți accesa constantele enum cu sintaxa punctului:

Enum este o scurtatura pentru „enumerare”, ceea ce înseamnă „listat în mod specific”.

100

Clasificare BT: Uz Intern


32.2 Enum inside a Class
Puteți avea, de asemenea, un enum în cadrul clasei:

Exemplu :

// output :

MEDIUM

101

Clasificare BT: Uz Intern


32.3 Enum in a Switch Statement
Enum este adesea utilizat in afirmatia switch pentru a verifica valorile corespunzatoare
Exemplu :

//output :

Medium level

102

Clasificare BT: Uz Intern


32.4 Loop Through an Enum
Tipul Enum are o metoda values () , care returneaza un array cu toate constantele enum –ului.
Aceasta metoda este folositoare atunci cand vreti sa facei loop prin constantele enum-ului.

//output :

LOW
MEDIUM
HIGH

Diferentele dintre Enumeratii si Clase

Un enum poate avea, la fel ca o clasă, atribute și metode.


Singura diferență este că constantele enumeratiei sunt publice, statice și finale (neschimbabile -
nu pot fi anulate).
Un enum nu poate fi utilizat pentru a crea obiecte și nu poate extinde alte clase (dar poate
implementa interfețe).

De ce și când să folosești Enum?

Folosiți enumere atunci când aveți valori despre care știți că nu se vor schimba, cum ar fi zilele,
lunile, culorile, puntea de cărți etc.

103

Clasificare BT: Uz Intern


33. Java User Imput (Scanner)

33.1 Java User Input


Clasa Scanner este utilizata pentru a obtine imput-ul utilizatorului si se gaseste in pachetul
java.util.
Pentru a utiliza clasa Scanner, creați un obiect al clasei și utilizați oricare dintre metodele
disponibile găsite în documentația clasei Scanner. In exemplu urmator vom folosii metoda
nextLine(), care este utilizata pentru a citii String-uri :

// output

Enter username
Alex
Username is : alex

Dacă nu știți ce este un pachet, citiți tutorialul nostru pentru pachete Java.

104

Clasificare BT: Uz Intern


33.2 Input Types
În exemplul de mai sus, am folosit metoda nextLine (), care este folosită pentru citirea string-
urilor. Pentru a citi alte tipuri, consultați tabelul de mai jos:

Metoda Descriere
nextBoolean() Citeste valorile boolene de la user
nextByte() Citeste valorile Byte de la user
nextDouble() Citeste valorile Double de la user
nextFloat() Citeste valorile Float de la user
nextInt() Citeste valorile Int de la user
nextLine() Citeste valorile String de la user
nextLong() Citeste valorile long de la user
nextShort() Citeste valorile Short de la user

În exemplul de mai jos, folosim diferite metode pentru a citi date de diferite tipuri:

Exemplu :

105

Clasificare BT: Uz Intern


34. Java Date and Time

34.1 Java Date


Java nu are o clasă Dată încorporată, dar putem importa pachetul java.time pentru a lucra cu
API-ul pentru dată și oră. Pachetul include multe clase de data și ore.
Spre exemplu :

Clasa Descriere
LocalDate Reprezinta data (year,month,day(yyyy-mm-dd))
LocalTime Reprezinta timpul (hour,minute,second si miliseconds (HH-mm-ss-zzz))
LocalDateTime Reprezinta abmele data si timpul (yyyy-MM-dd-HH-mm-ss.zzz)
DateTimeFormatter Formatator pentru afișarea și analizarea obiectelor de dată

34.2 Display Current Date


Pentru a afișa data curentă, importați clasa java.time.LocalDate și folosiți metoda now():

106

Clasificare BT: Uz Intern


//output
2019-09-28

34.3 Display Current Time


Pentru a afișa ora curentă (hour,minute,second si miliseconds), importați clasa
java.time.LocalTime și folosiți metoda now() :

//output
13:37:14.353174
34.4 Display Current Date and Time
Pentru a afișa data și ora curente, importați clasa java.time.LocalDateTime și folosiți metoda
now() :

//output :
2019-09-28T14:56:55.858447

107

Clasificare BT: Uz Intern


34.5 Formatting Date and Time
“T” din exemplul de mai sus este utilizat pentru a separa data de timp. Puteți utiliza clasa
DateTimeFormatter cu metoda ofPattern() din același pachet pentru a formata sau parsa
obiecte date-time. Următorul exemplu va elimina atât „T” cât și milisecunde din data datei:

//output :
Before Formatting: 2019-09-28T15:03:14.072683
After Formatting: 28-09-2019 15:03:14

Metoda ofPattern() acceptă tot felul de valori, dacă doriți să afișați data și ora într-un format
diferit. De exemplu:

Valoare Exemplu
yyyy-MM-dd “1988-09-29”
dd/MM/yyyy “29/09/1988”
dd-MMM-yyyy “29-Sep-1988”
E, MMM dd yyyy “Thu, Sep 29 1988”

Aici am ramas

108

Clasificare BT: Uz Intern


35. Java ArrayList

35.1 Java ArrayList


Clasa ArrayList este un array redimensionabil, care poate fi găsit în pachetul java.util.
Diferența dintre un array încorporat și un ArrayList în Java, este că dimensiunea unui array nu
poate fi modificată (dacă doriți să adăugați sau să eliminați elemente din / dintr-un array, trebuie
să creați unul nou). În timp ce elementele pot fi adăugate și eliminate din ArrayList oricând
doriți. Sintaxa este, de asemenea, ușor diferită :

Exemplu :
Creati un obiect ArrayList denumit cars care va stoca string-uri :

35.2 Add Items


Clasa ArrayList are multe metode utile. De exemplu, pentru a adăuga elemente la ArrayList,
utilizați metoda add ():
Exemplu :

// output :
[Volvo, BMW, Ford, Mazda]

109

Clasificare BT: Uz Intern


35.3 Access an Item
Pentru a acesa un element in ArrayList, utilizati metoda get() si referita la numarul de intex :
Exemplu :

// output :
Volvo
Amintiți-vă: idexi Array încep cu 0: [0] este primul element. [1] este al doilea element etc.
35.4 Change an Item
Pentru a modifica un element, utilizati metoda set() referinduva la numarul de intex

// output : Opel, BMW, Ford, Mazda

110

Clasificare BT: Uz Intern


35.5 Remove an Item
Pentru a sterge un element, utilizati metoda remove() referinduva la numarul de intex

// output : BMW, Ford, Mazda

Pentru a sterge toate elementele din ArrayList, utilizati metoda clear()

// output : [ ]

111

Clasificare BT: Uz Intern


35.6 ArrayList Size
Pentru a afla cate elemente are un ArrayList, utilizati metoda size()

// output : 4
35.7 Loop through an ArrayList
Buclati prin elementele unui ArrayList cu o bucla for, si utilizand metoda size() pentru a
specifica de cate ori ar trebui sa ruleze bucla :

// output :

112

Clasificare BT: Uz Intern


De asemenea poti sa faci bucla prin elementele unui ArrayList cu o bucla for-each :

// output :

35.8 Other Types


Elementele dintr-o ArrayList sunt de fapt obiecte. În exemplele de mai sus, am creat elemente
(obiecte) de tip „String”. Amintiți-vă că un String(șir) în Java este un obiect (nu un tip primitiv).
Pentru a utiliza alte tipuri, cum ar fi int, trebuie să specificați o wrapper class : Integer
Pentru alte tipuri primitive, utilizați: Boolean pentru boolean, Character pentru char,
Double pentru dublu, etc:
Ex:
Crearea unui ArrayList pentru a stoca numerele (adaugarea elementelor de tipul Integer )

113

Clasificare BT: Uz Intern


// output :

35.9 Sort an ArrayList


O altă clasă utilă din pachetul java.util este clasa Collections, care include metoda sort() pentru
sortarea listelor alfabetic sau numeric:

// output :

114

Clasificare BT: Uz Intern


Ex :

Sortati un ArrayList cu Integers :

// output :

115

Clasificare BT: Uz Intern


36. Java LinkedList

36.1 Java LinkedList

În capitolul anterior, ați aflat despre clasa ArrayList. Clasa LinkedList este aproape identică cu
ArrayList

// output :

36.2 ArrayList vs LinkedList


Clasa LinkedList este o colecție care poate conține multe obiecte de același tip, la fel ca
ArrayList.
Clasa LinkedList are toate aceleași metode ca și clasa ArrayList, deoarece ambele
implementează interfața List. Aceasta înseamnă că puteți adăuga articole, modifica articole,
șterge articole și șterge lista în același mod.
Cu toate acestea, în timp ce clasa ArrayList și clasa LinkedList pot fi utilizate în același mod,
ele sunt construite foarte diferit.
Cum lucreaza ArrayList ?
Clasa ArrayList are în ea o matrice obișnuită. Când se adaugă un element, acesta este plasat în
matrice. Dacă matricea nu este suficient de mare, se creează o matrice nouă, mai mare, pentru a o
înlocui pe cea veche, iar cea veche este eliminată.
Cum lucreaza LinkedList ?
LinkedList își stochează articolele în „containere”. Lista are un link către primul container și
fiecare container are un link către următorul container din listă. Pentru a adăuga un element la

116

Clasificare BT: Uz Intern


listă, elementul este plasat într-un container nou și acel container este legat de unul dintre
celelalte containere din listă.
Cum se folosesc ?
Cel mai bine este să utilizați un ArrayList atunci când:
- Doriți să accesați frecvent elemente aleatorii
- Trebuie doar să adăugați sau să eliminați elemente la sfârșitul listei

Cel mai bine este să utilizați un LinkedList atunci când:

- Utilizați lista doar prin parcurgerea acesteia în loc să accesați elemente aleatorii
- Trebuie frecvent să adăugați și să eliminați elemente de la începutul, mijlocul sau
sfârșitul fișierului listă

36.3 LinkedList Methods


În multe cazuri, ArrayList este mai eficient, deoarece este obișnuit să aveți nevoie de acces la
elemente aleatorii din listă, dar LinkedList oferă mai multe metode pentru a face anumite
operații mai eficiente :
addFirst() - Adaugă un articol la începutul listei.

// output :

117

Clasificare BT: Uz Intern


addLast() - Adaugă un articol la sfarsitul listei.

// output :

removeFirst() - Elimina un articol la începutul listei.

// output :

118

Clasificare BT: Uz Intern


removeLast() - Elimina un articol la sfarsitul listei.

// output :

getFirst() – Optineti elementul de la începutul listei.

// output :

119

Clasificare BT: Uz Intern


getLast() – Optineti elementul de la sfarsitul listei.

// output :

120

Clasificare BT: Uz Intern


37. Java HashMap

37.1 Java HashMap


În capitolul ArrayList, ați aflat că Arrays stochează articole ca o colecție ordonata și trebuie să
le accesați cu un număr de index (tip int).
Cu toate acestea, un HashMap stochează articole în perechi „ key/value” și le puteți accesa
printr-un index de alt tip (de exemplu, un String).
Un obiect este folosit ca cheie (index) către un alt obiect (valoare). Poate stoca diferite tipuri:
String key și Integer values sau același tip, cum ar fi: String key și String values

Exemplu
Creaza un obiect HashMap numit capitalCities care va stoca String key și String values

37.2 Add Items


Clasa HashMap are multe metode utile. De exemplu, pentru a adăuga elemente la acesta,
utilizați metoda put():

// output :

121

Clasificare BT: Uz Intern


37.3 Access an Items
Pentru a accesa o valoare în HashMap, utilizați metoda get() și consultați cheia acesteia:

// output :

37.4 Remove an Items


Pentru a sterge un item, utilizati metoda remove() si referitiva la cheia acestuia

// output :

Pentru a sterge toate inregistrarile folositi motoda clear()


122

Clasificare BT: Uz Intern


// output :

37.5 HashMap Size


Pentru a afla câte articole există, utilizați metoda size():

// output :

37.6 Loop Throught a HasMap

123

Clasificare BT: Uz Intern


Buclați prin elementele unui HashMap cu o buclă for-each
Utilizați metoda keySet () dacă doriți doar cheile și utilizați metoda values () dacă doriți doar
valorile

// output :

// output :

124

Clasificare BT: Uz Intern


Exemplu :

// output :

37.7 Other Types


Cheile și valorile dintr-un HashMap sunt de fapt obiecte. În exemplele de mai sus, am folosit
obiecte de tip „String”. Amintiți-vă că un String în Java este un obiect (nu un tip primitiv).
Pentru a utiliza alte tipuri, cum ar fi int, trebuie să specificați o clasă wrapper echivalentă:
Integer.
Pentru alte tipuri primitive, utilizați: Boolean pentru boolean, Character pentru caracter,
Double pentru dublu, etc:

Exemplu :

125

Clasificare BT: Uz Intern


Creați un obiect HashMap numit people care va stoca cheile String și valorile Integer :

// output :

38. Java HashSet

126

Clasificare BT: Uz Intern


38.1 Java HashSet
Un HashSet este o colecție de articole în care fiecare articol este unic și se găsește în pachetul
java.util :
Creați un obiect HashSet numit cars care va stoca String-uri :

38.2 Add Items


Clasa HashSet are multe metode utile. De exemplu, pentru a adăuga elemente la acesta, utilizați
metoda add ():

// output :

În exemplul de mai sus, chiar dacă BMW este adăugat de două ori, apare doar o dată în set,
deoarece fiecare articol dintr-un set trebuie să fie unic.

38.3 Check if an Item Exist

127

Clasificare BT: Uz Intern


Pentru a verifica dacă există un element într-un HashSet, utilizați metoda contain ():

// output :

38.4 Remove an Item


Pentru a elimina un element, utilizați metoda remove ():

// output :

Pentru a elimina toate articolele, utilizați metoda clear ():

128

Clasificare BT: Uz Intern


// output :

38.5 HashSet Size


Pentru a afla câte articole există, utilizați metoda size() :

// output :

38.6 Loop Through a HashSet

129

Clasificare BT: Uz Intern


Buclați prin elementele unui HashSet cu o buclă for – each :

// output :

38.7 Other Types


Elementele dintr-un HashSet sunt de fapt obiecte. În exemplele de mai sus, am creat elemente
(obiecte) de tip „String”. Amintiți-vă că un șir în Java este un obiect (nu un tip primitiv).
Pentru a utiliza alte tipuri, cum ar fi int, trebuie să specificați o clasă wrapper echivalentă: Integer
Pentru alte tipuri primitive, utilizați: Boolean pentru boolean, Character pentru caracter,
Double pentru dublu, etc:

Exemplu :

Utilizați un HashSet care stochează obiecte Integer:

130

Clasificare BT: Uz Intern


// output :

131

Clasificare BT: Uz Intern


39. Java Iterator

39.1 Java Iterator

Un Iterator este un obiect care poate fi folosit pentru a parcurge colecții, cum ar fi ArrayList și
HashSet.
Se numește „iterator”, deoarece „iterare” este termenul tehnic pentru looping.
Pentru a utiliza un Iterator, trebuie să-l importați din pachetul java.util.

39.2 Getting an Iterator


Metoda iterator () poate fi utilizată pentru a obține un Iterator pentru orice colecție :

// output :

132

Clasificare BT: Uz Intern


39.3 Looping Through a Collection
Pentru a parcurge o colecție, utilizați metodele hasNext () și next () ale Iteratorului

// output :

39.4 Removing Items from a Collection


Iteratorii sunt concepuți pentru a schimba cu ușurință colecțiile prin care fac bucla.
Metoda remove () poate elimina elemente dintr-o colecție în timp ce faceți o buclă.

Exemplu :

Utilizați un iterator pentru a elimina numerele mai mici de 10 dintr-o colecție:

133

Clasificare BT: Uz Intern


// output :

Încercarea de a elimina elemente folosind for loop sau for-each loop nu ar funcționa corect,
deoarece colecția schimbă dimensiunea în același timp în care codul încearcă sa foloseasca loop.

134

Clasificare BT: Uz Intern


40. Java Wrapper Classes

40.1 Java Wrapper Classes


Clasele Wrapper oferă o modalitate de a utiliza tipuri de date primitive (int, boolean etc.) ca
obiecte.
Tabelul de mai jos arată tipul primitiv și clasa wrapper echivalentă:

Primitive Data Type Wrapper Class


byte Byte
Short Short
int Integer
long Long
float Float
double Double
boolean Boolean
char Character

Uneori trebuie să utilizați clase wrapper, de exemplu atunci când lucrați cu obiecte de colecție,
cum ar fi ArrayList, unde tipurile primitive nu pot fi utilizate (lista poate stoca numai obiecte):

135

Clasificare BT: Uz Intern


// output :

40.2 Creating Wrapper Objects


Pentru a crea un obiect wrapper, utilizați clasa wrapper în loc de tipul primitiv. Pentru a obține
valoarea, puteți imprima obiectul:

// output :

Deoarece acum lucrați cu obiecte, puteți utiliza anumite metode pentru a obține informații despre
obiectul specific.
De exemplu, următoarele metode sunt utilizate pentru a obține valoarea asociată cu obiectul
wrapper corespunzător: intValue (), byteValue (), shortValue (), longValue (), floatValue (),
doubleValue (), charValue (), booleanValue () .
Urmatorul exemplu va produce același rezultat ca exemplul de mai sus:

136

Clasificare BT: Uz Intern


// output :

O altă metodă utilă este metoda toString (), care este utilizată pentru a converti obiecte wrapper
în Stringuri.
În exemplul următor, convertim un Integer într-un String și folosim metoda length () a clasei
String pentru a genera lungimea „Stringului” :

// output :

137

Clasificare BT: Uz Intern


41. Java Exceptios Try … Catch

41.1 Java Exception


La executarea codului Java, pot apărea diferite erori: erori de codare făcute de programator, erori
datorate intrării greșite sau alte lucruri imprevizibile.
Când apare o eroare, Java se va opri în mod normal și va genera un mesaj de eroare. Termenul
tehnic pentru aceasta este: Java va arunca o excepție (aruncă o eroare).

41.2 Java Try and catch


Instrucțiunea try vă permite să definiți un bloc de cod care să fie testat pentru erori în timp ce
acesta este executat.
Instrucțiunea catch vă permite să definiți un bloc de cod care să fie executat, dacă apare o eroare
în blocul try.
Cuvintele cheie try and catch vin în perechi:

Sintaxa

Se considera urmatorul exemplu:

Acest lucru va genera o eroare, deoarece myNumbers [10] nu există.

Rezultatul va fi cam așa:

138

Clasificare BT: Uz Intern


Dacă apare o eroare, putem folosi try ... catch pentru a prinde eroarea și a executa un cod pentru
a o gestiona:

// output :

41.3 Finally
Cuvantul finally te lasa sa executi codul, dupa try…catch, indiferent de resultat

// output :

41.4 The throw keyword


139

Clasificare BT: Uz Intern


Instrucțiunea throw vă permite să creați o eroare personalizată.
Instrucțiunea throw este utilizată împreună cu un tip de excepție. Există multe tipuri de excepții
disponibile în Java: ArithmeticException, FileNotFoundException,
ArrayIndexOutOfBoundsException, SecurityException, etc:

Exemplu :

Aruncați o excepție dacă vârsta este mai mică de 18 ani (tipăriți „Acces refuzat”). Dacă vârsta
este mai mare de 18 ani, tipăriți „Acces acordat”:

// output :

Dacă vârsta avea 20 de ani, nu veți primi o excepție:

// output :

42. Java Regular Expressions

140

Clasificare BT: Uz Intern


O expresie regulată este o secvență de caractere care formează un model de căutare.
Când căutați date într-un text, puteți utiliza acest model de căutare pentru a descrie ceea ce
căutați.
O expresie regulată poate fi un singur caracter sau un model mai complicat.
Expresiile obișnuite pot fi folosite pentru a efectua toate tipurile de căutare de text și operații
de înlocuire a textului.

Java nu are o clasă de expresie regulată încorporată, dar putem importa pachetul java.util.regex
pentru a funcționa cu expresii regulate.

141

Clasificare BT: Uz Intern

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