Sunteți pe pagina 1din 11

Chapter 2 Java Building Blocks

Short si char – 16 biti. Aceste tipuri de date sunt asemanatoare si fac posibile urmatoarele
combinatii:
short bird =’d’; - valoarea lui bird nu va fi ‘d’ ci valoarea asociata lui d adica 100
char mammal = (short)83; - valoarea mammal va fi caracterul asociat valorii 83 deci ‘S’
Tipul de date char este signed si nu poate stoca valori negative.
Int si float – 32 de biti. In cazul float este nevoie de adaugarea literei “f” pentru a fi recunoscut ca float.
Long si double – 64 de biti. Pentru ca un numar sa fie recunoscut ca long acesta trebuie sa aiba la final
“L”, in caz contrar va fi considerat int.
Java permite stocarea de numere si in alte sisteme:
-in baza 8. Foloseste 0 ca prefix ex:”017”
-hexadecimal. 0xFF
-binar, de exemplu 0b10 sau 0B10
In cazul in care avem numere cu valori mari este posibila adaugarea caracterului “_” pentru a face
numarul mai usor de citit. Putem adauga inclusiv 2 sau mai multe caractere”_” alaturat dar acestea nu se
pot adauga:in fata numarului, inainte sau dupa punctul decimal sau la finalul numarului.
Ex: double exValid = 1_00.0_0;
double notValid = 1.0_;
Identificatorii variabilelor pot incepe cu o litera, sau caracterele “$” si “_”.In cazul “_” nu poate fi folosit
ca identificator singular ci trebuie urmat de alte caractere(incepand cu Java 9).
Identificatorii pot include caractere numerice dar nu pot incepe cu acestea.
Identificatorii variabilelor nu pot fi cuvintele cheie din Java(class, enum etc) dar pot fi variatii ale lor
scrise de exemplu cu majuscule(in orice caz NU este recomandata folosirea lor!!!!!!!!!!!).
Numele claselor nu pot incepe cu “$” deoarece acest caracter este folosit de Java pentru anumite fisiere.
In cazul in care declaram mai multe variabile pe aceeasi linie acestea trebuie sa fie de acelasi tip.
NU este permisa declararea aceluiasi tip pe acelasi rand(acelasi rand=tot ce exista pana la caracterul “;”)
de exemplu “double d1,double d2;”
Primitivele au valori default doar atunci cand sunt field-uri ale unei clase sau variabile globale. In cazul
variabilelor locale acestea nu vor avea valoare default si folosirea lor fara sa fie initializata va duce la o
eroare de compilare. ATENTIE la cazul in care variabilele ce sunt utilizate(pot sa nu fie initializate atat
timp cat nu sunt folosite) sunt initializate in cadrul unor blocuri decizionale in care exista posibilitatea sa
fie initializate pentru una din valori, de exemplu “true”, si sa nu fie initializate pentru false, in acest caz
vom avea o eroare de compilare.
Incepand cu Java 10 a fost introdus keyword-ul var . Acest keyword poate fi folosit doar pentru variabile
locale.Campurile unei clase nu pot avea ca tip var.
Desi var poate stoca tipuri de date multiple odata ce este initializata cu o valoare de un anumit tip var va
pastra tipul acelei valori. De exemplu “var number=7;”, in acest caz putem sa schimbam valoarea lui
number cu un alt int “number=3;” dar nu putem sa ii asignam un alt tip de date ca de exemplu number sa
stocheze un String “number=”test”;”-NU VA COMPILA.
Exemplu 2:
var apples = (short)10;
apples = (byte)5;
apples = 1_000_000;
Acest exemplu nu va functiona din cauza liniei 3. La linia 2 chiar daca facem cast la byte va fi stocat tot
un short(byte e mai mic decat short si poate fi trecut la short in mod automat). Linia 3 nu va compila
deoarece este o valoare mai mare decat cee ace poate stoca short.
Spre deosebire de primitive var trebuie sa fie initializate la declarare(chiar daca sunt initializate dupa
acest lucru nu va functiona), deoarece in caz contrar compilatorul nu va sti de ce tip sunt, in acest caz
vom avea o eroare de compilare.
Var nu pot initializate pe acelasi rand cu alte tipuri de date(int a=3, var b=0;-NU VA COMPILA) ,NU
pot fi initializate cu null(ATENTIE poate stoca null in cazul in care a fost initializat in prealabil cu o
instanta a unui obiect SAU daca este specificat tipul ”var nume=(String)null;”) si NU suporta
declararea multipla(var a=0,b=2;-NU VA COMPILA).
NU putem folosi var ca tip de date pentru parametrii unei metode (var sunt doar variabile locale).
Putem folosi var ca: nume pachet “package var;”, nume clasa(inclusiv constructor)”public class
Var{}”, nume metoda”public void var();”, nume variabila locala “var var = “var”;”. Aceste cazuri nu
cauzeaza erori de complicare dar arata ca dracu si din aceasta cauza nu sunt recomandate.
In Java putem accesa intr-un bloc variabile din exteriorul acestuia, de exemplu daca declaram o variabila
locala in interiorul unei metode sau al unui bloc conditional etc. incercarea de a utiliza aceea variabila in
afara acelui bloc va duce la o eroare de compilare.

Chapter 5 Core Java APIs


STRING
String-ul este o secventa de caractere(String implementeaza interfata CharSequence, aceeasi interfata este
implementata si de StringBuilder.)Java permite crearea unui string in 2 moduri:
String name = “Fluffy”;
String name = new String(“Fluffy”);
In cazul operatorului “+” conteaza ordinea si tipul in care sunt concatenate elementele.
Ex: System.out.println(“test”+1+2) – va printa “test12”, deoarece string e primul si se vor considera si
celelalte elemente tot ca string.
System.out.println(1+2+”test”) - va printa “3test”, deoarece primele 2 sunt int-uri se va face prima data
suma si dupa vor fi concatenate.!!!!!! INDIFERENT DE FAPTUL CA SUNT INT IN CLAR SAU SUB
FORMA DE VARIABILA.
Clase String este immutable!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Metoda concat nu schimba un string(string este imutabil).
Ex.
String name = “test”;
name.concat(“6”);
System.out.println(name);-va printa “test”.
METODE UZUALE STRING:
String string = “test”;

- string.length() – va returna numarul de caractere al acelui string.


- string.charAt(0) – va returna un char corecpunzator caracterului de la acel index in cazul
nostrum index=0 si va returna ‘t’.
- string.indexOf(‘t’)- va returna 0 deci indexul la care se afla ‘t’.Aceasta metoda poate primi mai
multe tipuri de parametrii.
Ex: System.out.println(string.indexOf(“es”));-va returna 1 deci pozitia primului caracter din
substring in cadrul string-ului.
System.out.println(string.indexOf(‘t’),2);-va returna 3 deci pozitia primului ‘t’ de dupa acel
index.
System.out.println(string.indexOf(‘x’));- va returna -1 deoarece “test” nu contine caracterul
‘x’.
- substring(int indexBegin) sau substring(int indexBegin,indexEnd). ATENTIE!!!! – in cazul unui
string index-urile se comporta ca niste delimitatoare aflate in fata fiecarui caracter, deci in cazul
in care avem de exemplu un string cu 6 caractere vom avea inclusiv un index 6 ce va corespunde
sfarsitului string-ului(desi avem index de final in cazul in care de ex dorim string.charAt(6) –
vom primi exceptie outOfBound).
- toLowerCase() si toUpperCase() -modifica in litere mici/mari
- equals(Object obj) – comparator de obiecte
- equalsIgnoreCase(String str) ex string.equalsIgnoreCase(“TEST”);-returneaza true. Diferenta
fata de equals normal e faptul ca primeste ca parametru un string si nu un object. Scopul acestei
metode e de a compara 2 string-uri indifferent daca sunt scrise cu caractere mari sau mici.
- startsWith(String str) si endsWith(String str). Aceste metode sunt case-sensitive si verifica
daca un string incepe sau se termina cu o anumita secventa de caractere.
- replace(char oldChar, char newChar) sau replace(CharSeqeunce targer, CharSequence
replacement). Aceste metode returneaza un string si realizeaza inlocuirea unui caracter sau
secvente de caractere dintr-un string.
Ex: System.out.println(“test.”replace(‘t’,’r’));-va printa”resr”.
- contains(CharSequence charSec) – returneaza un Boolean daca string-ul continue acea
secventa.
- strip() si trim() – elimina spatiile de la inceputul si sfarsitul unui string. Metoda strip() a fost
introdusa cu Java 11, are aceeasi functionalitate cu trim(), dar strip() suporta Unicode.
- stripLeading() si stripTrailling() – prima sterge spatiile able de la inceputul unui string iar cea
de-a doua de la sfarsit.
- intern() – returneaza valoarea din string pool daca exista, iar daca nu exista o insereaza.

STRING BUILDER
Ex: StringBuilder sb = new StringBuilder(“test”);
StringBuilder sb = new StringBuilder();
StringBuilder sb = new StringBuilder(10); - in acest fel transmitem faptul ca avem idee despre ce
dimensiune va avea StringBuilder-ul.
Desi asemanatoare cu String, StringBuilder nu este immutable.
Metode uzuale StringBuilder:

- charAt() - la fel ca String


- indexOf() - la fel ca String
- length() - la fel ca String
- substring() - la fel ca String
- append() – functioneaza ca un concatenator ce va adauga parametrul transmis. Putem avea orice
tip de parametru: char,string,int,Boolean etc;
- insert(int offset, String str) – aceasta metoda primeste ca parametrii indexul la care trebuie facut
insert si string-ul ce trebuie inserat. Indexul metodei insert este la fel ca in cazul string-ului, deci
putem sa facem insert la index=lungimea StringBuilder-ului.
- delete(int startIndex, int endIndex) – sterge caracterele cuprinse intre acei indecsi(acesti
indecsi sunt la fel ca la string si functioneaza ca delimitatoare)
- deleteCharAt(int index) – sterge un char de la pozitia trimisa ca parametru.
- replace(int startIndex, int endIndex, String newString) – spre deosebire de metoda din String
aceasta inlocuieste secventa de caractere dintre cei doi indecsi cu newString
- reverse() – evident ce face
- toString() – la fel de evident

EQUALITY
Ex1: StringBuilder one = new StringBuilder();
StringBuilder two = new StringBuilder();
StringBuilder three = one.append("a");
System.out.println(one == two); // false
System.out.println(one == three); // true
Obiectele one si two sunt diferite, dar one si three sunt egale,metodele din StringBuilder returneaza dupa
chaining referinta actuala, acestea facand referinta la acelasi obiect.
Ex2: String x = "Hello World";
String z = " Hello World".trim();
System.out.println(x.equals(z)); // true
Metoda equals compara continutul string-urilor si nu referintele.

ARRAYS
Exista mai multe moduri de a declara un array:
int[] numAnimals;
int [] numAnimals2;
int []numAnimals3;
int numAnimals4[];
int numAnimals5 [];
Atentie la declararea pe acelasi rand a mai multor array-uri.
Ex: int[] ids, types; - in acest caz avem doua array-uri

int ids[], types; - spre deosebire de primul exemplu avem un array si o variabila
Metode uzuale array:

- Arrays.sort(array) – sorteaza un array in ordine crescatoare daca e vorba de valori numerice sau
daca sunt string-uri in functie de valorile ASCII
- Arrays.binarySearch(array, targetElement) – functioneaza daca array-ul este sortat.Daca
elementul va fi gasit va fi returnat indexul acestuia, in caz contrar va fi returnata o valoare
negative dupa cum urmeaza, valoarea indexului unde ar trebui inserat*(-1)-1;
- Arrays.compare(array1, array2) – compara 2 array-uri si va returna o valoare(0 daca array-
urile au aceeasi dimensiune si aceleasi valori, o valoare negative in cazul in care primul array are
o dimensiune mai mica sau daca primul element care difera este mai mic in primul array, o
valoare pozitiva daca al doilea array are aceleasi elemente ca primul dar are elemente extra la
final sau daca prima valoare care difera este mai mica in cel de al doilea array).
- Arrays.mismatch(array1,array2) – daca cele 2 array-uri sunt egale va returna -1 altfel va
returna primul index in care cele 2 array-uri difera

ARRAY-URI MULTIDIMENSIONALE

int [][] vars1 - 2D array

int vars2 [][] - 2D array

int [] vars3[]; -2D array

int [] vars4[], vars5[][] – vars 4 este 2D iar vars5 este 3D

ARRAY LIST
- La fel ca StringBuilder, ArrayList isi poate schimba capacitatea la runtime dupa cum e nevoie.
- Asemanator cu array, ArrayList este o secventa ordonata ce accepta duplicate.
- Putem crea un ArrayList in trei moduri:
ArrayList list1 = new ArrayList();
ArrayList list2 = new ArrayList(10);
ArrayList list3 = new ArrayList(list2);
- Exemplele precedente sunt inca functionale dar au fost folosite inainte de Java 5 atunci cand au
fost introduce tipurile de date generice, astfel la crearea unui ArrayList putem specifica tipul de
date pe care vrem sa il contina:
ArrayList<String> list4 = new ArrayList<String>();
ArrayList<String> list4 = new ArrayList<>(); - valabil incepand cu Java7
- Putem asigna un ArrayList unui var:
var strings1 = new ArrayList<String>();
strings.add(“a”);
var strings2 = new ArrayList<>(); - va compila dar tinand cont ca nu am specificat tipul, se va
considera tipul cel mai generic si anume Object.
strings2.add(“s”)- merge(putem adauga deoarece String e subclasa a lui Object)
for(String s: strings2){} – nu va compila deoarece avem o lista de obiecte si nu string-uri

METODE UZUALE ARRAY LIST


- add(element). Aceasta metoda are doua semnaturi:
boolean add(E element) – returneaza mereu true(chestier mostenita de la Collections)
void add(int index, E element) – adauga la un anumit index acel element
In cazul in care nu specificam tipul la ArrayList putem avea mai multe tipuri de date:
Ex1: ArrayList list = new ArrayList();
list.add(“test”);
list.add(Boolean.TRUE); - compileaza
Ex2: ArrayList<String> list = new ArrayList();
list.add(“test”);
list.add(Boolean.TRUE); - nu compileaza deoarece am specificat faptul ca lista va continue
doar string-uri.
- remove(). Metoda are 2 semnaturi:
boolean remove(Object object) – returneaza true daca obiectul este in lista si a fost eliminat iar
daca nu exista returneaza false
E remove(int index) – returneaza elementul de tip E care a fost eliminat de la acel index.
- E set(int index, E newElement) – seteaza valoarea de la un anumit index cu noua valoare. Daca
indexul nu exista se va arunca IndexOutOfBoundsException.
- boolean isEmpty() – true daca e goala, false in caz contrar
- int size() – returneaza lungimea listei
- void clear() – sterge toate elementele din lista
- boolean contains(Object object) – true daca exista obiectul in lista si false in caz contrar
- boolean equals(Object object). ArrayList are o implementare custom a metodei equals(), pentru
ArrayList aceasta metoda verifica daca listele au aceeasi lungime, aceleasi elemente si daca
elementele sunt in aceeasi ordine.

Putem crea o lista folosind varargs in urmatoarele moduri:


- List<String> list1 = Arrays.asList(“one”, “two”);
- List<String> list2 = List.of(“one”, “two”);

ArrayList poate fi sortat folosind metode din Collections ca de exemplu Collections.sort(list).

SETS SI MAPS

- SET este o colectie de obiecte care nu permite duplicate.


- SET nu este o colectie ordonata, deci nu avem metode care folosesc index. Putem folosi metode
ca add sau remove exact ca la ArrayList(metodele add si remove ce primesc parametru value si
nu index)
- MAP este o interfata ce permite asocieri de tipul cheie-valoare, cea mai folosita implementare
fiind HashMap.Nu permite chei duplicate

Metode uzuale MAP(HashMap):


- clear() – sterge elementele din map
- isEmpty()
- size()
- V get(Object key) – returneaza valoarea corespunzatoare key-ului sau null daca nu exista valoare
mapata
- V getOrDefault(Object key, V other) – va returna valoarea corespunzatoare key-ului daca aceasta
exista, iar in caz contrar va returna other
- V put(K key, V value) – adauga sau inlocuieste o asociere key-value
- V remove(Object key) – va sterge valoarea mapata acelui key daca exista si o va returna, in caz
contrar va returna null
- boolean containsKey(Object key) – verifica daca avem acel key in map
- boolean containsValue(Object value) – verifica daca avem acea valoare in map
- Set<K> keySet() – returneaza un Set cu toate key-urile dintr-un map
- Collection<V> values() – returneaza o colectie cu valorile dintr-un map

MATH API

- Math.max(a,b) – returneaza maximul dintre a si b. Parametrii pot fii double, float, int sau long
- Math.min(a.b) – returneaza minimul
- Math.round(param) – daca param e double va rotunji si va returna in long iar daca e float va
rotunji si va returna un int
- double Math.pow(double number, double exponent)
- double Math.random() – va returna un double random mai mare sau egal cu 0 dar mai mic decat
1.
CLASE WRAPPER

- Integer – Integer.valueOf(1)
- Byte – Byte.valueOf((byte) 1)
- Short – Short. valueOf((short) 1)
- Boolean – Boolean.valueOf(true)
- Long – Long.valueOf(1)
- Float – Float.valueOf((float) 1.0)
- Double – Double.valueOf(1.0)
- Character – Character.valueOf(‘c’)
Metoda valueOf() returneaza un wrapper in timp ce parseInt() returneaza o primitiva. Avem
metode de tip parse(ce convertesc din String intr-o primitiva) pentru toate clasele wrapper mai
putin Character(nu putem face din String char).

Chapter 8 Class Design


Constructorul unei clase poate avea ca parametrii obiecte, array-uri, primitive sau tipuri generice dar
NU var.
Ordinea de apelare a constructorilor este contructor clasa baza-> constructor clasa copil.
Daca nu avem un constructor definit in interiorul clasei acesta va fi generat la compilare si va fi
prezent in fisierul .class. NU vom avea constructor default in cazul in care avem definit un
constructor.
Un constructor poate apela alt contructor din aceeasi clasa folosind this(ex: this(5,”verde”);) cu
conditia ca apelul sa fie primul din interiorul constructorului. Apelul nu va functiona(nu va
compila) daca avem un alt statement inainte de this sau daca se ajunge in situatia de a se apela la
infinit celalat constructor(de exemplu daca avem doi constructori care se apeleaza reciproc sau in
cazul in care constructorul se apeleaza pe sine insusi in interiorul lui).
Constructorul poate sa fie privat in situatia in care avem de exemplu o clasa ce are numai metode
statice, in acest fel la compilare nu va fi adaugat un constructor default in .class si nu vom putea
instantia acea clasa.
Constructorul clasei de baza poate fi apelat folosind super() de exemplu super(“test”);. La fel ca
in cazul this() apelul trebuie sa fie primul statement din cadrul constructorului.
O clasa ce contine doar constructori private poate fi extensa DOAR intr-un inner class din
interiorul acelei clase.
O clasa ce extinde o alta clasa ce contine un constructor ( de exemplu in clasa de baza avem
definit un constructor cu parametrii) trebuie sa defineasca un constructor ce va apela
constructorul clasei de baza cu parametrii respective, in caz contrar nu va compila.
Constructorul poate initializa field-urile de tip final din cadrul unei clase in cazul in care acestea
nu au fost initializate la declarare sau nu au fost initializate in cadrul unui bloc static.
Metodele ce suprascriu metode din clasa parinte nu pot avea modificatori de acces mai
restrictive, deasemenea aceste metode nu pot arunca exceptii mai generale decat cele
aruncate de metoda din clasa parinte.
Metodele ce suprascriu metode din clasa de baza trebuie sa returne un tip de date covariant(tipul
returnat in clasa copil e un subtip al celui din clasa parinte).
Daca avem 2 clase X si Y(clasa de baza) fiecare avand variabile si blocuri statice,variabile de
instanta, la instantierea clasei X ordinea va fii urmatoarea:
Procesare variabile si blocuri statice din Y-> procesare variabile si blocuri statice din X->
procesare varibile de instanta Y-> procesare variabile de inst. X-> apel constructor Y-> apel
constructor X
O metoda ascunsa este acea metoda care are aceeasi semnatura sin in clasa X si in clasa Y si este
declarata statica in ambele.
O metoda declarata private in clasa de baza nu poate fi suprascrisa in clasa copil dar poate fi
redeclarata cu aceeasi semnatura.

Chapter 9 Advanced class design

 Clasele abstracte NU trebuie sa declare neaparat metode abstracte in interiorul lor, DAR o metoda
abstracta poate fi declarata doar in interiorul unei clase abstracte (public abstract long eat(); ).
 Modificatorul abstract poate fi pus inainte sau dupa modificatorul de access DAR nu poate fi pus
dupa class.
 Constructorul unei clase abstracte este apelat doar atunci cand clasa abstracta e initializata de o
subclasa.
 Java nu permite ca o clasa sau metoda sa poata fi adnotata atat abstract cat si final deoarece
acestea sunt in conflict. Daca ar fi declarate ca final acestea nu ar m-ai putea fi suprascrise.
 Java nu permite ca o clasa sau metoda sa poata fi adnotata atat abstract cat si private deoarece
acestea sunt in conflict.
 Subclasele nu pot reduce nivelul de vizibilitate al unei metode. De exemplu daca o metoda a fost
declarata ca protected in clasa abstracta , aceasta va trebui sa aiba ca acces in subclasa private
sau protected.

Chapter 12 Java Fundamentals


Variabilele clasei marcate cu final trebuie sa fie initializate(la declarare, bloc static sau asignare de
valoare) inaintea oricarei folosiri, in caz contrar codul nu va compila.
Marcarea unor obiecte(ex:StringBuilder) cu final va face ca referinta sa fie constanta dar nu si datele
din interiorul StringBuilder-ului.
NU se pot marca cu final metode abstracte fiindca nu se mai poate oferi o implentare.
NU se pot marca interfetele si clasele abstracte cu final deoarece contin metode abstracte ce au
nevoie de implementare.
Crearea unui enumerari se face flosind enum.
Ex: public enum Enum{
Val1, Val2, Val3
}
Enum pot fi comparate atat cu “==” cat si folosind equals deoarece fiecare valoare din enum este
initializata o singura data in JVM.
Enum NU pot fi extinse.
Metodele uzuale din enum sunt values() ce returneaza un array cu valorile din enum, name()
returneaza un String ce continue numele unei valori din enum, ordinal() ce returneaza un int ce reprezinta
ordinea in acel enum a unei valori.
In cazul in care valorile din enum se folosesc ca volori in switch-case se vor folosi doar numele
valorii si nu Enum.val.
Ex: case SUMMER:
case Season.SUMMER – nu va compila
Enum pot continue pe langa lista de valori variabile de instanta, metode si constructor. Variabilele de
instanta trebuie declarate ca final iar constructorul e implicit private.
Clasele immutable principale sunt String si clasele din pachetul java.time .
CLASE NESTED

- Inner class. Clasa non-statice definite ca membru al unei clase. Poate avea ca modificator de
acces oricare dintre cele 4, poate extinde sau implementa orice clasa sau interfata, pot fi marcate
cu abstract sau final, NU pot avea campuri si metode marcate cu static sau cu final cu
exceptia campurilor care sunt static final(constante). Aceste clase pot accesa membrii private ai
clasei in care sunt incluse.Aceste clase pot fi instantiate fie in cadrul unei metode din clasa Outer
fie de o instanta a clasei Outer de ex: Inner inner = outer.new Inner();
- Static nested class. Clase static ce sunt declarate in interiorul unei alte clas. Spre deosebire de
clasele inner nu avem nevoie de o instanta a clasei ce realizeaza incapsularea pentru a crea o
instanta. Clasa Enclosing poate accesa campurile si metodele din clasa statica incapsulata.
- Clase locale. Clase incapsulate in interiorul unei metode. Aceste clase nu au modificatory de
acces, nu pot fi declarate ca static si nu pot avea metode sau campuri marcate cu static sau final
cu exceptia campurilor constante ce sunt static final. Pot accesa variabilele locale daca acestea
sunt final sau final efectiv.
- Clase anonime. Clase ce sunt declarate si instantiate in acelasi statement.

INTERFETE
Interfetele pot avea metode declarate ca default(sunt marcate cu keyword-ul “default”). Scopul
acestora e capacitatea de a adauga noi metode fara a fi nevoie de a oferi o implementare in clasele ce au
deja implementata aceasta interfata. In cazul in care o clasa implementeaza doua sau mai multe interfete
ce contin metode default similare va fi nevoie sa fie oferita o implementare acelei metode pentru a se
depasi ambiguitatea.
Interfetele pot avea metode statice, acestea pot fi accesate de interfata ca orice alta metoda staticaq
dintr-o clasa. Clasele ce implementeaza interfete ce cintin metode statice nu pot accesa metodele statice
din interfata.
Interfetele pot avea metode private sau private static dar acestea nu pot fi apelate decat de alte metode
private din interfata sau metode default. Deasemenea acestea trebuie sa aiba o implementare si nu pot fi
abstracte.
Interfetele functionale sunt baza pentru expresiile lambda. Aceste interfete contin o singura metoda
abstracta. Acestea sunt declarate cu ajutorul adnotarii @FunctionalInterface, dar a aceasta este optionala.

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

  • Stringuri
    Stringuri
    Document18 pagini
    Stringuri
    Русские Трейлеры
    Încă nu există evaluări
  • Curs04 Java
    Curs04 Java
    Document44 pagini
    Curs04 Java
    dani10gh
    Încă nu există evaluări
  • Tablouri String
    Tablouri String
    Document8 pagini
    Tablouri String
    CrăciunOvidiu
    Încă nu există evaluări
  • Șirurile de Caractere În PYTHON Tipul de Date STRING
    Șirurile de Caractere În PYTHON Tipul de Date STRING
    Document24 pagini
    Șirurile de Caractere În PYTHON Tipul de Date STRING
    Maxim Durnea
    Încă nu există evaluări
  • Lab6 POO Calc
    Lab6 POO Calc
    Document12 pagini
    Lab6 POO Calc
    bulllett
    Încă nu există evaluări
  • 10 19 20 Siruri de Caractere
    10 19 20 Siruri de Caractere
    Document8 pagini
    10 19 20 Siruri de Caractere
    Ion Tataru
    Încă nu există evaluări
  • Lectia4 PDF
    Lectia4 PDF
    Document17 pagini
    Lectia4 PDF
    Calin Luchian
    Încă nu există evaluări
  • Stringurile
    Stringurile
    Document23 pagini
    Stringurile
    craciun roxana livia
    Încă nu există evaluări
  • Laborator 3
    Laborator 3
    Document8 pagini
    Laborator 3
    Tavy Sud
    Încă nu există evaluări
  • Laborator 3
    Laborator 3
    Document8 pagini
    Laborator 3
    Corynna Mbs
    Încă nu există evaluări
  • Siruri Probleme
    Siruri Probleme
    Document17 pagini
    Siruri Probleme
    Mihaela Lupeş
    Încă nu există evaluări
  • BPC Stringuri
    BPC Stringuri
    Document46 pagini
    BPC Stringuri
    Vitalie Ambrosi
    Încă nu există evaluări
  • L4si5-Tipuri de Date
    L4si5-Tipuri de Date
    Document7 pagini
    L4si5-Tipuri de Date
    Gheorghe Morosan
    Încă nu există evaluări
  • Siruri de Caractere
    Siruri de Caractere
    Document12 pagini
    Siruri de Caractere
    Cristi Conache
    Încă nu există evaluări
  • Tipuri de Date in Pascal
    Tipuri de Date in Pascal
    Document11 pagini
    Tipuri de Date in Pascal
    Alina Plesa
    Încă nu există evaluări
  • STIVA
    STIVA
    Document7 pagini
    STIVA
    Anamaria Stefania Nane
    Încă nu există evaluări
  • Curs FP 9
    Curs FP 9
    Document5 pagini
    Curs FP 9
    Ramona Bajan
    Încă nu există evaluări
  • Tipuri de Date 2
    Tipuri de Date 2
    Document10 pagini
    Tipuri de Date 2
    Nikita C
    Încă nu există evaluări
  • 10 Siruri Si Expresii Regulate
    10 Siruri Si Expresii Regulate
    Document8 pagini
    10 Siruri Si Expresii Regulate
    AlexandraGabriela
    Încă nu există evaluări
  • Siruri de Caractere
    Siruri de Caractere
    Document14 pagini
    Siruri de Caractere
    Ingrid Creteanu
    Încă nu există evaluări
  • Java 3
    Java 3
    Document43 pagini
    Java 3
    Alexandra Rosca
    Încă nu există evaluări
  • Algoritmi Java PDF
    Algoritmi Java PDF
    Document237 pagini
    Algoritmi Java PDF
    Gicu Busuioc
    Încă nu există evaluări
  • C
    C
    Document22 pagini
    C
    Tudor Ana
    Încă nu există evaluări
  • Siruri de Caractere
    Siruri de Caractere
    Document17 pagini
    Siruri de Caractere
    Anonim Sporgi
    Încă nu există evaluări
  • Rezolvarea Problemelor-2
    Rezolvarea Problemelor-2
    Document93 pagini
    Rezolvarea Problemelor-2
    ScribdTranslations
    Încă nu există evaluări
  • C# Siruri
    C# Siruri
    Document5 pagini
    C# Siruri
    Ştefan Şălaru
    100% (1)
  • Word
    Word
    Document14 pagini
    Word
    JOZSEF MOLNAR
    Încă nu există evaluări
  • Atestatdenisifrim
    Atestatdenisifrim
    Document31 pagini
    Atestatdenisifrim
    api-610041661
    Încă nu există evaluări
  • Sir de Caractere
    Sir de Caractere
    Document12 pagini
    Sir de Caractere
    Inga Gurmeza
    0% (2)
  • Stiva
    Stiva
    Document7 pagini
    Stiva
    Radu Alexandru
    Încă nu există evaluări
  • Tipuri, Variabile, Operatori Si Expresii in C Si C++
    Tipuri, Variabile, Operatori Si Expresii in C Si C++
    Document11 pagini
    Tipuri, Variabile, Operatori Si Expresii in C Si C++
    inaqx
    Încă nu există evaluări
  • Stiva - Operatii Specifice
    Stiva - Operatii Specifice
    Document5 pagini
    Stiva - Operatii Specifice
    Cosnita Emilia-Felicia
    Încă nu există evaluări
  • L3 Java
    L3 Java
    Document6 pagini
    L3 Java
    Alexandru Grigoriță
    Încă nu există evaluări
  • Siruri Caractere
    Siruri Caractere
    Document5 pagini
    Siruri Caractere
    teodora_palade_1
    Încă nu există evaluări
  • Programare Orientata Obiectcurs1
    Programare Orientata Obiectcurs1
    Document54 pagini
    Programare Orientata Obiectcurs1
    Manuela Iancu
    Încă nu există evaluări
  • 4 - Tipul String
    4 - Tipul String
    Document5 pagini
    4 - Tipul String
    Caesar8
    Încă nu există evaluări
  • Ionic Atestat
    Ionic Atestat
    Document21 pagini
    Ionic Atestat
    Ioana. Rusu
    Încă nu există evaluări
  • Structura Programelor Pascal
    Structura Programelor Pascal
    Document17 pagini
    Structura Programelor Pascal
    AlexVara
    Încă nu există evaluări
  • Limbajul Perl Final
    Limbajul Perl Final
    Document48 pagini
    Limbajul Perl Final
    Vik Vitiok
    Încă nu există evaluări
  • Siruri de Caractere
    Siruri de Caractere
    Document26 pagini
    Siruri de Caractere
    Gîlcă Cristina
    Încă nu există evaluări
  • Introducere Pascal
    Introducere Pascal
    Document27 pagini
    Introducere Pascal
    Daniel Popa
    Încă nu există evaluări
  • Functii Java
    Functii Java
    Document3 pagini
    Functii Java
    Bogdan Popa
    Încă nu există evaluări
  • Lab 5 Programarea Calculatoarelor
    Lab 5 Programarea Calculatoarelor
    Document7 pagini
    Lab 5 Programarea Calculatoarelor
    Petru Voloceai
    Încă nu există evaluări
  • Șiruri de Caractere În C++
    Șiruri de Caractere În C++
    Document10 pagini
    Șiruri de Caractere În C++
    Vasy Andrew
    Încă nu există evaluări