0% au considerat acest document util (0 voturi)
2 vizualizări12 pagini

Java

Documentul oferă o prezentare generală a componentelor mediului Java, explicând rolul fiecărei componente, precum și concepte fundamentale precum compilarea, bytecode, variabile și structuri de control. De asemenea, discută despre instrucțiunile condiționale, bucle, clase, obiecte, și conceptele de incapsulare și moștenire. Se subliniază importanța utilizării corecte a variabilelor, a structurilor de control și a principiilor de programare orientată pe obiect în Java.

Încărcat de

alex02
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca DOCX, PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
2 vizualizări12 pagini

Java

Documentul oferă o prezentare generală a componentelor mediului Java, explicând rolul fiecărei componente, precum și concepte fundamentale precum compilarea, bytecode, variabile și structuri de control. De asemenea, discută despre instrucțiunile condiționale, bucle, clase, obiecte, și conceptele de incapsulare și moștenire. Se subliniază importanța utilizării corecte a variabilelor, a structurilor de control și a principiilor de programare orientată pe obiect în Java.

Încărcat de

alex02
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca DOCX, PDF, TXT sau citiți online pe Scribd

[Link] sunt componentele mediului Java si care este rolul fiecareia?

Componentele mediului Java sunt :

 JComponent
 JLabel și JButton
 Controale pentru manipularea textului
 JToggleButton
 Dialoguri
 JComboBox
 JList
 Crearea controlului de utilizator (Bean)

2. Ce inseamna motto-ul Java: Write once, run anywhere?

Motto-ul Java Write once, run anywhere arata rezultatul programul respectiv.

[Link] tip de limbaj de programare este Java?

Java este un limbaj de programare orientat-obiect, puternic tipizat, conceput de către James
Gosling

4. Ce este procesul de compilare?

Compilarea este procesul de translatare a codului scris într-un limbaj structurat de programare
în instrucţiuni specifice procesorului pe care urmează să ruleze aplicaţia respectivă, în cod maşină .

5. Ce este bytecode si ce componenta a mediului Java il interpreteaza?

Bytecode este codul de programare (OOP) orientat pe obiect compilat pentru a rula pe o mașină
virtuală (VM) în loc de o unitate de procesare centrală (CPU).

6. Ce trebuie sa cream pentru a scrie cod Java?

Pentru a scrie un cod Java trebuie sa cream o clasa si sa o denumim

7. Ce este o variabila?

Variabila este un simbol folosit a reprezenta un element arbitrar al unei mulțimi

8. Ce trebuie specificat cand declaram o variabila?

Trebuie specificat : clasa de memorare si tipul variabilei

1. Operatul =+ semnifica faptul ca se aduna termenii intre ei.


2. In cazul,in care se reprezinta valori logice.
3. Stringurile imutabile nu pot sa se mai modifice
4. String Pool are rolul de a stoca mai multe valori siruri
5. Este recomandat sa folosim clasa StringBuilder in loc de String cand am uitat ceva sa introducem
intr-in cod.
6. Alocarea dinamică se realizează în heap. Alocarea dinamică are loc atunci când nu se știe, în
momentul compilării, câtă memorie va fi necesară pentru o variabilă, o structură, un vector.
Dacă se știe din momentul compilării cât spațiu va ocupa o variabilă, se recomandă alocarea ei
statică, pentru a preveni erorile frecvent apărute în contextul alocării dinamice

1 instructiuni conditionala

2 instructiuni repititive

1. Cele două categorii de instrucțiuni în Java sunt : Tipuri primitive și Tipuri Obiect
2. Instrucţiunea if primeşte o expresie a cărei valoare este obligatoriu de tipul boolean. Evaluarea
acestei expresii poate duce la doar două valori: adevărat sau fals.
3. De exemplu, String resultString = (5> 1)? 'ADMIS RESPINS’;În exemplul de mai sus, operatorul
ternar evaluează condiția de testare (5> 1), dacă returnează adevărat, atunci atribuie valoarea
1 adică „PASS” și atribuie „FAIL” dacă returnează false. Deoarece (5> 1) este adevărat,
resultString valoarea este alocată ca „PASS”.Acest operator este numit ca Operator ternar
deoarece Operatorul ternar folosește 3 operanzi, mai întâi este o expresie booleană care se
evaluează fie la adevărat, fie la fals, al doilea este rezultatul atunci când expresia booleană se
evaluează la adevărat, iar al treilea este rezultatul când expresia booleană se evaluează la fals.
4. Să mai observăm că este posibil ca într-o instrucţiune if să nu se execute nici o instrucţiune în
afară de evaluarea expresiei în cazul în care expresia este falsă iar partea else din instrucţiunea
if lipseşte. Expresia booleană va fi întotdeauna evaluată.
Iată un exemplu de instrucţiune if în care partea else lipseşte:
int x = 3;
if( x == 3 )
x *= 7;
5. Instrucţiunea switch ne permite saltul la o anumită instrucţiune etichetată în funcţie de
valoarea unei expresii. Putem să specificăm câte o etichetă pentru fiecare valoare particulară a
expresiei pe care dorim să o diferenţiem. În plus, putem specifica o etichetă la care să se facă
saltul implicit, dacă expresia nu ia nici una dintre valorile particulare specificate.
6. Execuţia unei instrucţiuni switch începe întotdeauna prin evaluarea expresiei dintre
parantezele rotunde. Această expresie trebuie să aibă tipul caracter, octet, întreg scurt sau
întreg. După evaluarea expresiei se trece la compararea valorii rezultate cu valorile particulare
specificate în etichetele case din interiorul blocului de instrucţiuni. Dacă una dintre valorile
particulare este egală cu valoarea expresiei, se execută instrucţiunile începând de la eticheta
case corespunzătoare acelei valori în jos, până la capătul blocului. Dacă nici una dintre valorile
particulare specificate nu este egală cu valoarea expresiei, se execută instrucţiunile care încep
cu eticheta default, dacă aceasta există.
7. Nu,nu este obligatory putem pune de cate ori este nevoie
8. Instrucțiunea switch este ușor de editat deoarece a creat casele separate pentru diferite
afirmații, în timp ce în declarațiile embedded if devine dificilă identificarea declarațiilor care
trebuie editate.
9. Această instrucţiune de buclare se foloseşte atunci când vrem să executăm o instrucţiune atâta
timp cât o anumită expresie condiţională rămâne adevărată. Expresia condiţională se evaluează
şi testează înainte de execuţia instrucţiunii, astfel că, dacă expresia era de la început falsă,
instrucţiunea nu se mai executa niciodată.
10. while -conditie< fa ceva >si se iese din bucla cand nu se mai respecta conditia
do -<fa ceva> while conditia trebuie indeplinita
11. Instrucţiunea for se foloseşte atunci când putem identifica foarte clar o parte de iniţializare a
buclei, testul de terminare a buclei, o parte de reluare a buclei şi un corp pentru buclă

1. Instrucțiunea break întrerupe execuția unei structuri repetitive (while, do while, for).
2. intrerupe executia repetarii curente, inainte de a fi executate celelalte operatii de dupa ea
din corpul acoladei.
3. Un array reprezinta o succesiune de elemente sub forma de perechi cheie -> valoare, unde
fiecare cheie identifica in mod unic un element.
4. Este declarata variabila strlen.
5. Elementele unui Array sunt de mai multe tipuri:struct,union,class.
6. Numărul de elemente din matrice în timpul declarației se numește dimensiunea sau
lungimea matricei. Având în vedere o matrice numită „myArray”, lungimea matricei
7. Pentru citirea datelor dintr-un Array asociativ se poate folosi instructiunea foreach care
simplifica parcurgerile de acest gen.
Instructiunea foreach are urmatoarea forma generala:
foreach (tablou as $cheie => $valoare) {corp}
8. type_nume=array[tip_ordinal1,......tip_ordinaln] of tip_oarecare
unde:
n-reprezinta dimensiunea tabloului
tip_ordinal1,...tip_ordinaln reprezinta tipul indicilor tabloului
tip_oarecare reprezinta tipul componentelor tabloului
9. Instantierea Se realizeaza prin intermediul operatorului new si are ca efect crearea efectiva
a obiectului cu alocarea spatiului de memorie corespunzator. Initializarea Se realizeaza prin
intermediul constructorilor clasei respective. Rectangle() este un apel catre constructorul
clasei Rectangle care este responsabil cu initializarea obiectului. Initializarea se poate face
si cu anumiti parametri, cu conditia sa existe un constructor al clasei respective care sa
accepte parametrii respectivi;
10. 6 elemente
11. Termină funcția de adunare și redă controlul punctului în care funcția a fost apelată; în
acest caz, funcției main.
Avem urmatoarea propozitie "We learn Java". Cum putem scoate din interiorul acestui
String cuvantul Java?
Luand ca exemplu propozitia de mai sus, cum putem transforma acel String into un array?
Luand ca exemplu propozitia de mai sus, cum putem verifica daca propozitia cupinde sau
nu cuvantul Java?
Luand ca exemplu propozitia de mai sus, cum putem verifica daca propozitia se termina cu
cuvantul Java?

[Link] Java se poate scoate din String prin comanda remove.


[Link] se poate transforma intr-un array prin comanda char.
[Link] a verifica daca propozitia cuprinde sau nu cuvantul Java ne folosim de comanda IF si
tiparam true sau [Link] e adevarat o sa ne apara true si daca nu e adevarat o sa ne apara
false.
[Link] folosim de coamnda sout,pentru a verifica propozitia daca se termina cu cuvantul Java.
1. Clasele sunt elemente fundamentale ale oricarei aplicatii Java. Ele reprezinta structuri logice
care definesc comportamentul si starea obiectelor.
2. Obiectele sunt construite prin operatorul new care va apela functia constructor din clasa (cu
sau fara parametrii)
[Link] e nevoie sa cream .
4. modificator acces – descrie drepturile de utilizare a acestei clase dintr-un program Java;
acest atribut este optional, avand ca valoare default, private; desi este dedicat un alt post doar
pentru a intelege modificatorii de acces, acum retinem valorile posibile:

public – in termeni de securitate, clasa poate fi folosita oriunde in programul Java;


protected
private
class – cuvant cheie in Java ce defineste aceasta structura

nume clasa – numele clasei definit de programator; numele clasei trebuie sa respecte aceleasi
conventii de nume ca si orice variabila (post variabile)

extends – permite derivarea dintr-o clasa de baza (mai multe in tutorialul despre
derivare/mostenire)

implements – permite derivarea din una sau mai multe interfete


5. Daca clasa reprezinta ceva abstract, obiectele reprezinta ceva concret. Obiectele reprezinta
instante ale clasei deoarece prin construirea unui obiect povestea din spatele clasei devine
ceva concret: un spatiu de memorie in Heap in care atributele au valori.

Obiectele sunt construite prin operatorul new


[Link] parametrii si argumentare transmitem datele unei metode.
7. Ca parametri pentru metode pot fi utilizati tipurile
valorice (int, double, etc.), insa pot fi transmise si
obiecte.
8. Constructorul are numele clasei, nu returnează explicit un tip anume (nici măcar void) și
poate avea oricâți parametri.
9. Datele definite într-o clasă se mai numesc date-membru,
variabile-membru, atribute sau câmpuri, iar operaţiile se mai numesc metode sau funcţii
membru.

[Link] membru dintr-un program Java poate fi declarat static folosind cuvântul cheie „static”
care precede declarația / definiția acestuia. Când un membru este declarat static, atunci
înseamnă în esență că membrul este partajat de toate instanțele unei clase fără a face copii
pentru fiecare instanță.
2. Variabile
Metode
Blocuri
Clase (mai precis, clase imbricate)
Când un membru este declarat static, atunci acesta poate fi accesat fără a utiliza un obiect.
Aceasta înseamnă că, înainte de instanțierea unei clase, membrul static este activ și accesibil.
3. Pentru a avea acces la o clasă definită în cadrul unui pachet dintr-o clasă definită în alt
pachet se foloseşte cuvântul cheie import urmat de numele pachetului şi de numele clasei care
trebuie accesată.

import [Link];

class Desenator{

}
4. Aceasta instructiune va fi plasata in fisierele sursa care cuprind clasele si interfetele din
pachet.
5. Variabile de instanta (Campuri non-statice)
Din punct de vedere tehnic, obiectele isi stocheaza starile in campuri "non-statice", care sunt
campuri declarate fara a contine cuvantul cheie static. Campurile non-statice mai sunt
cunoscute si sub denumirea de variabile de instanta deoarece valorile lor sunt unice pentru
fiecare instanta a unei clase (cu alte cuvinte pentru fiecare obiect); viteza_actualaa unei
biciclete este independenta de viteza_actuala a alteia.
Variabile de clasa (Campuri statice)
O variabila de clasa reprezinta orice camp declarat cu specificatorul static; acesta ii spune
compilatorului ca exista o singura copie a acestei variabile indiferent de cate ori a fost
instantiata clasa. Un camp care defineste un numar de viteze pentru un anumit tip de biciclete
poate fi marcat ca fiind static deoarece, conceptual, acelasi numar de viteze va fi aplicat tuturor
instantelor. Codul static int numViteze = 6; va crea un camp static. In plus, poate fi adaugat
cuvantul cheie final pentru a indica faptul ca numarul de viteze nu se va schimba niciodata,
ceea ce inseamna ca proprietatea respectiva este de fapt o constanta.

Variabile locale
Similar modului in care un obiect isi stocheaza starea in campuri, o metoda isi va stoca adesea
starea temporara in variabile locale. Sintaxa declararii unei variabile locale este similara
declararii unui camp (de exemplu, int count = 0;). Nu exista un cuvant cheie special care
desemneaza o variabila ca fiind locala; aceasta determinare rezulta direct din locatia in care
este declarata variabila: se afla intre acoladele ce delimiteaza o metoda. Astfel, variabilele
locale sunt vizibile doar in cadrul metodelor in care sunt declarate si nu sunt accesibile din
restul clasei.

[Link] o funcţie de nedefinit array-uri adică unul care acceptă un număr variabil de argumente

7. Poate fi folosit la terminarea problemei cuvantul cheie final.

1. Incapsularea datelor se referă la procesul de legare a datelor și


funcțiilor sau metodelor care operează pe aceste date într-o singură
unitate, astfel încât să fie protejat de interferențe exterioare și de
utilizare incorectă.

3. Numită și derivare, moștenirea este un mecanism de refolosire a codului


specific limbajelor orientate obiect și reprezintă posibilitatea de a defini o
clasă care extinde o altă clasă deja existentă. Ideea de bază este de
a prelua funcționalitatea existentă într-o clasă și de a adăuga una nouă sau
de a o modela pe cea existentă.

Clasa existentă este numită clasa-părinte, clasa de bază sau super-clasă. Clasa
care extinde clasa-părinte se numește clasa-copil (child), clasa
derivată sau sub-clasă.

4. Polimorfismul este conceptul cu ajutorul căruia se poate efectua o


singură acțiune în moduri diferite. Este derivat din două cuvinte grecești,
adică poli și morfuri. „Poli” înseamnă multe și „morfuri” înseamnă forme.
De acum, polimorfismul implică multe forme. În programarea orientată pe
obiecte, Poate fi definită ca capacitatea unui limbaj de programare de a
prelucra obiecte diferit, în funcție de clasa lor sau de tipul lor de date.
Practic, îl putem defini ca fiind capacitatea claselor derivate de a redefini
metode.

5. Suprascrierea se referă la redefinirea metodelor existente în clasa


părinte de către clasa copil în vederea specializării acestora. Metodele din
clasa parinte nu sunt modificate. Putem suprascrie doar metodele vizibile
pe lanțul de moștenire (public, protected). O metodă din clasa copil
suprascrie metoda din clasa părinte dacă are același tip de return și
aceeași semnatură (nume și parametri).

6. Supraîncarcarea se referă la posibilitatea de a avea într-o clasă mai


multe metode cu același nume, dar implementari diferite. În Java,
compilatorul poate distinge între metode pe baza semnăturii lor, acesta
fiind mecanismul din spatele supraîncărcarii.

7. O clasă finală nu poate fi moștenită.

8. Cuvântul cheie „super” în Java este folosit pentru a se referi la


obiectele clasei părinte imediate. Clasa părinte este, de asemenea,
denumită „Superclasă”.

9. O clasa derivata are toate functiile si variabilele membru ale clasei de


baza, dar poate avea si functii membre suplimentare si/sau variabile
membru suplimentare.

 metoda suprascrisă are același tip de return și semnatură ca


metoda inițială
 putem avea un tip de return diferit de cel al metodei inițiale,
atâta timp cat este un tip ce moștenește tipul de return al
metodei inițiale
 specificatorul de access al metodei suprascrise nu poate fi mai
restrictiv decât cel al metodei inițiale

1. Clasă de baza = clasa de la care se preia structura şi


comportamentul n Clasa derivată = clasa care preia structura şi
comportamentul
2. Compoziția este o formă mai specifică de agregare. Descrie
proprietatea. Acesta poate fi explicat folosind exemplul de mai
jos.
3. Un enum este un tip definit de utilizator care constă dintr-un set de
constante numite numiți enumeratori. Culorile curcubeului vor fi
cartografiate astfel:

> enum rainbowcolors (roșu, portocaliu, galben, verde, albastru,


indigo, violet)}

Acum intern, compilatorul va folosi un int pentru a ține aceste și


dacă nu sunt furnizate valori, roșu va fi 0, portocaliu este 1 etc.

4. Enum poate fi declarat în interior sau în exterior (exemplu de


cuvânt cheie enum) o clasă, dar nu în interiorul unei metode. Aici,
vom demonstra modul în care enum este declarat în cadrul unei
clase.

5. O clasă abstractă , în programarea orientată obiect , este o clasă


care definește o interfață fără a o implementa pe deplin. Acesta
servește ca punct de plecare pentru a genera una sau mai multe
clase specializate, toate având aceeași interfață de bază, care poate
fi apoi utilizată indiferent (adică într-un mod polimorf ) de aplicațiile
care cunosc interfața de bază a clasei abstracte.

6. Metodele abstracte nu pot fi declarate în afara claselor abstracte.


Dacă aveți nevoie ca o metodă să fie declarată abstractă, trebuie să
declarați și clasa care o conține ca abstractă. De asemenea,
metodele abstracte nu pot avea un corp. Corpul este furnizat în
clasa care moștenește din clasa abstractă.

[Link] pot fi declarate

8. O clasă concretă este o clasă care nu poate fi moștenită sau


subclasată. Odată ce o clasă este declarată finală în Java, aceasta
este un fel de constantă și devine imuabilă.

9. Interfetele duc conceptul de clasa abstracta cu un pas înainte prin


eliminarea oricarei implementari a metodelor.
10. Pentru a crea o interfaţă folosim cuvântul cheie interface în loc
de class. La fel ca în cazul claselor, interfaţa poate fi declarată
public doar dacă este definită într-un fișier cu același nume ca cel pe
care îl dăm acesteia. Dacă o interfaţă nu este declarată public
atunci specificatorul ei de acces este package-private. Pentru a
defini o clasă care este conformă cu o interfaţă anume folosim
cuvântul cheie implements. Această relaţie este asemănătoare cu
moștenirea, cu diferenţa că nu se moștenește comportament, ci
doar “interfaţa”. Pentru a defini o interfaţă care moștenește altă
interfaţă folosim cuvântul cheie extends. Dupa ce o interfaţă a fost
implementată, acea implementare devine o clasă obișnuită care
poate fi extinsă prin moștenire.

11. În primul rând, o clasă abstractă permite câmpuri care nu sunt


statice sau finale, spre deosebire de câmpurile statice și finale
utilizate în interfețe. Interfețele nu pot avea niciun cod de
implementare folosit în ele și poate exista un cod de implementare
folosit în clasa abstractă. Codurile de implementare introduse în
clasa abstractă pot avea câteva sau toate metodele implementate.
În mod implicit, toate metodele interfeței sunt "abstract. „

Vizibilitatea este, de asemenea, posibilă pentru metodele sau


membrii unei clase abstracte, care pot varia, cum ar fi public,
protejat, privat sau nici unul. Vizibilitatea interfeței, pe de altă
parte, poate fi presetată doar la un mod de vizibilitate care este
"public". ""

O clasă abstractă va moșteni automat clasa de obiecte. Aceasta, de


fapt, înseamnă că sunt incluse metode precum clona () și egal ().
Într-o interfață, nu este posibilă nicio moștenire a clasei obiectului.
După aceasta, clasa abstractă are capacitatea de a avea un
constructor, dar o interfață nu poate avea una.

Interfața din Java are de asemenea o funcție foarte importantă cu


implementarea mai multor moșteniri, deoarece o clasă poate avea
doar o clasă super. Deși poate exista o singură clasă superioară, ea
poate fi implementată în orice număr de interfețe. Nu este posibil să
existe mai multe moșteniri într-o clasă abstractă.
În performanță, interfețele tind să fie mai lente în implementare,
spre deosebire de clasa abstractă, în principal datorită direcției
suplimentare de găsire a metodei corespunzătoare într-o clasă.
Diferența, totuși, a devenit mai lentă datorită mașinilor virtuale
moderne Java care sunt în continuă actualizare.

1. Aceste tipuri de excepții sunt aruncate atunci când apar de


către Mașină virtuală Java sau JVM și sunt incluse în cadrul
clasei EroareAcestea sunt utilizate pentru a descrie erorile
interne ale sistemului, deși acest tip de eroare apare foarte rar
și nu putem face mult mai mult decât să informăm utilizatorul
și să terminăm programul.
2. Există două tipuri de excepții. Acestea sunt enumerate mai jos:
-Excepții definite de [Link]ă două tipuri de excepții.
Acestea sunt enumerate mai jos:
-Excepții definite de utilizator
-Excepții definite de sistem.
3. Exceptiile sunt tratate cu ajutorul a trei tipuri de instructiuni : try, catch
si finally.
[Link].
5 In limbajul Java o metoda poate fi supraincarcata - overloaded – prin
modificarea signaturii metodei. Signatura unei metode este data de
numele metodei si tipurile parametrilor
6. Genericitatea intervine tocmai pentru a elimina aceste probleme.
Concret, să urmărim secvența de cod de mai jos:
List<Integer> myIntList = new LinkedList<Integer>();
[Link](new Integer(0));
Integer x = [Link]().next();
7. Metodele generice, ca și clasele generice, sunt metode parametrizate
(tipizate) pe care le folosim atunci când nu putem specifica tipul
parametrilor metodei. De asemenea, la fel ca în cazul claselor generice,
înlocuirea tipurilor necunoscute cu tipuri specifice se întâmplă la apelarea
metodei.
8. O colectie este de fapt un obiect care grupeaza mai multe elemente intr-
o singura unitatae. Colectiile se utilizeaza pentru stocarea, regasirea si
manupularea datelor. Deci colectiile reprezinta obiecte care in mod natiral
formeaza un grup.
 interfete: tipuri de date abstracte (TAD=ADT Abstract Data Type)
pentru repreentarea diferitelor colectii. Aceste interfete permit ca
colectiile sa fie manipulabile intr-un mod unitar indiferent de
implementarii.

9.

1. Path input = [Link]();


2. Java try-with-resources înseamnă declararea resursei în instrucțiunea try. O resursă nu este
altceva decât închiderea sau eliberarea unui obiect după utilizarea acestuia. Aceasta este în
principal pentru a elibera memoria ocupată de obiect.
3. -de tip text - un astfel de fişier conţine o succesiune de linii, separate prin new line ('\n')
-de tip binar - un astfel de fişier conţine o succesiune de octeti, fără nici o structură.
4. Serializarea este o metoda prin care se pot salva, intr-o maniera unitara, datele impreuna cu
signatura unui obiect.
5. O funcţie lambda (funcţie anonimă) este o funcţie definită şi apelată fără a fi legată de un
identificator. Funcţiile lambda sunt o formă de funcţii ,,incuibate” (nested functions) în sensul că
permit accesul la variabilele din domeniul funcţiei în care sunt conţinute.
6. tring[] numbers = { "0042", "010", "9", "27" };
int[] nums = [Link](s => [Link](s)).ToArray();
foreach(int num in nums)
[Link](num);
7. Au fost introduse interfețele funcționale, care reprezintă interfețe ce conțin fix o metodă
(neimplementată / abstractă). Aceste interfețe pot fi implementate sub forma de expresii
lambda. Pentru a reduce numărul de linii de cod, pentru a putea pasa funcții ca parametri la
metode și pentru folosirea evaluării leneșe, despre care veți discuta la Paradigme de
Programare, în semestrul următor), ele fiind folosite pentru a implementa funcții anonime în
Java. Pentru a marca o interfață funcțională, este de recomandat să adăugam
adnotarea @FunctionalInterface, prin care se permite existența unei singure metode abstracte
în cadrul unei interfețe funcționale.
@FunctionalInterface
interface FunctionalInterface {
int sum(int a, int b);
}

class Main {
public static void main(String[] args) {
FunctionalInterface sumOp = (a, b) -> a + b;
[Link]([Link](1, 2));
}
}
8. Stream-urile au fost introduse în Java 8, pentru a permite programatorului să efectueze
operații de tipul filter, map și reduce pe colecții într-un mod elegant și eficient.

Stream-urile pot fi obținute prin mai multe modalități, în special de la liste și set-uri, care expun
metodele stream() și parallelStream(). Diferența constă în faptul că cea dintâi face operațiile
secvențial în timp ce a doua le face în paralel pe un mediu de procesare cu mai multe core-uri
9. Provenite din Programarea functionala, functiile de map(), filter() si reduce au fost importate
in Java ca principal mijloc de lucru cu Stream-uri. Ele ajută la reducerea considerabilă a codului
scris, dar pot, în același timp, să îngreuneze înțelegerea acestuia, cu atât mai mult pentru
programatorii aflați la început de carieră.
10. Clasele declarate în interiorul unei alte clase se numesc clase interne (nested classes).
Acestea permit gruparea claselor care sunt legate logic și controlul vizibilității uneia din cadrul
celorlalte.

Clasele interne sunt de mai multe tipuri:

clase interne normale (regular inner classes)


clase anonime (anonymous inner classes)
clase interne statice (static nested classes)
clase interne metodelor (method-local inner classes) sau blocurilor
De cand am inceput cursul mi s-a creat un orizont mult mai bine conturat despre ceea ce
inseamna sa fii programator,asta dandandu-ti posibilitatea de a cunoste noi skiluri si totodata
imi da posibilitatea de a ma angaja pe posture bine [Link] se axează aproape în
proporție de 100% pe partea practică. Mentorul a creat un mediu de învățare plăcut încă din
prima zi. Totul a fost informal. Am primit inclusiv hint-uri, îndrumări despre ce am putea fi
întrebați la interviu și ce am putea noi să îl întrebăm pe intervievator.

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