Documente Academic
Documente Profesional
Documente Cultură
Tipurile primitive
Valoare
Tip Dimensiune Valori
implicita
Alocare:
<variabila> = new <tip>[n1][[n2]..]
double[][] x={{1,2,3},{1,2},{1,2,3,4}};
double[][] y=new double[][]{{1,2,3},{23,45,67,89}};
Object[][] o = {{"Liviu","Diana"},{23,56,90},{3.14}};
for(Object linie[]:o){
System.out.println();
for(Object e:linie){
System.out.print(e+" ");
}
}
Object[][] v = {new String[]{"Liviu","Diana"},new Integer[]{23,56,90},new
Double[]{3.14}};
Tipul Enum
• Tipul Enum este un tip special de clasa utilizat pentru definirea de constante cu o
structura complexa
• Sintaxa:
[public|protected|private] enum numeEnum {
CONSTANTA_1,CONSTANTA_2,...,CONSTANTA_N;
[numeEnum(lista_parametrii){...}]
[ Campuri_si_metode ]
}
• Modificatorii protected și private pot apărea doar când enumerarea este interna
unei clase
• Compilatorul adaugă la crearea enumerării o metoda statică values() care întoarce
intr-un vector constantele definite prin enumerare
• Enumerările nu pot fi instantiate. Constructorul permite asocierea de valori
constantelor din enumerare.
Metode Enum
Ca orice clasă, Enum conține metode statice și de instanță care permit o
gestionare flexibilă a conținutului:
public final String name(); // Numele de tip String al enumerării
public final int ordinal(); // Numărul de ordine în cadrul enumerării
public static T valueOf(String name); //Întoarce valoarea
corespunzătoare șirului specificat prin name
public enum Cartier {
AVIATIEI(2),DRUMUL_TABEREI(2),UNIRII(0);
private final int zona;
Cartier(int zona){ this.zona=zona; } public class Imobil {
public int getZona() { return zona; } public Cartier cartier;
} public double valoare;
public Cartier getCartier() { return cartier; }
public void setCartier(Cartier cartier) {
public static void main(String[] args) { this.cartier = cartier; }
Imobil i1=new Imobil(); public double getValoare() { return valoare; }
i1.setValoare(100000); public void setValoare(double valoare) {
i1.setCartier(Cartier.AVIATIEI); this.valoare = valoare;
System.out.println("Impozit:"+i1.impozit()); }
System.out.println("Cartierul Aviatiei:"+ public double impozit() {
Cartier.AVIATIEI.name()); switch (cartier.getZona()) {
System.out.println("Cartiere:"); case 0:
for(Cartier c:Cartier.values()){ return valoare * 0.2;
System.out.print(c+" "); case 1:
} return valoare * 0.1;
Cartier cartier=Cartier.valueOf("AVIATIEI"); default:
System.out.println("\nConstanta pentru Aviatiei:" return valoare * 0.05;
+cartier); }
} }
}
Obiecte immutable
• Un modul este un nou nivel de organizare a codului, aflat peste nivelul pachetelor
• Fiecare modul descrie ce pachete sunt expuse și de ce pachete ale altor module depinde aplicația
• Într-un modul pot fi utilizate numai clasele publice exportate de alte module
• Un modul poate fi considerat un container de pachete
Necesitate
• JDK este prea mare pentru dispozitive mici. Fișierele JAR, cum ar fi rt.jar, sunt prea mari pentru a
fi utilizate pe dispozitive și aplicații mici.
• Prin modularizare se permite accesul numai la clasele pe care dorim să le folosească alții
Descrierea modulelor
• Fiecare modul conține un fișier descriptor care descrie structura modulului cu numele module-
info.java. În fișierul descriptor sunt definite mai multe aspecte ale modulului cum ar fi numele
modulului, o lista modulelor de care depinde acest modul sau o lista cu toate pachetele pe care le
dorim accesibile din afara modulului. Aceste elemente sunt inserate prin directive precum:
• requires - permite declararea dependințelor
module my.module {
requires module.name;
}
• exports - permite exportarea pachetelor. În mod implicit, un modul nu expune nici un pachet al
său altor module.
module my.module {
exports com.my.package.name;
}
module my.module {
export com.my.package.name to com.specific.package;
}
Tipuri de module
• Module de sistem - Acestea sunt modulele standard ale distribuției Java, enumerate atunci când
rulăm comanda java --list-modules. Acestea includ modulele Java SE și JDK.
• Module de aplicație - Acestea sunt modulele de utilizator. Sunt specificate în fișierul descriptor.
• Module automate - Modulele atașate din fișierele JAR asociate. Numele modulului va fi furnizat
de JAR.
• Modul fără nume - Sunt module asociate fișierelor JAR din versiuni anterioare.
Conversii
Conversii de tip (type casting)
float la double
Exp (E_Conversii)
Upcasting – Conversia către referințe ale
superclaselor/superinterfețelor. Este implicit
Downcasting - Conversia către referințe ale
superclaselor/superinterfețelor. Este explicit
Conversiile de tip boxing
Conversii catre String. Apar in expresii ca urmare a supraîncărcării operatorului "+" pentru clasa
String
Blocuri de initializare
Blocuri de inițializare statice
• Un bloc de inițializare static este un bloc de cod cuprins intre o pereche de paranteze si precedat
de cuvântul cheie static:
static {
// cod inițializare
}
• Este executat la momentul primei încărcări a clasei si este in general utilizat pentru inițializarea
câmpurilor statice
• Pot fi oricâte si in orice ordine, mediul de execuție asigurând execuția lor in ordinea apariției in
cadrul clasei
Blocuri de inițializare de instanță
Exp (E_GC)