Sintaxa limbajului Java; Structura lexicală a unui program: Diferență între versiuni

De la WikiLabs
Jump to navigationJump to search
Linia 126: Linia 126:


Cuvântul cheie care definește o clasă este '''class''', acesta fiind urmat pe numele clasei și de implementarea acesteia între acolade.
Cuvântul cheie care definește o clasă este '''class''', acesta fiind urmat pe numele clasei și de implementarea acesteia între acolade.
<div class="conventie"><font color="#ff0000">Convenție:</font> Orice nume de clasă sau interfață începe cu literă mare.</div>


<syntaxhighlight lang="java">
<syntaxhighlight lang="java">

Versiunea de la data 20 iulie 2012 06:55

O aplicație Java este formată din două tipuri de elemente: clase și interfețe.

Regulă: Un fișier .java conține exact o interfață SAU o clasă principală și zero sau mai multe clase interne (inner-class).


Sfat: Evitați utilizarea claselor interne. Acestea se pot implementa sub forma unei clase principale, cu modificatorii de acces potriviți.

Înainte să prezentăm structura lexicală a claselor și interfețelor, trebuie să discutăm despre tipurile de date.

Tipuri de date

În Java, există două categorii de tipuri de date: primitive și referințe. Tipurile primitive se referă la cele care au valori imediate (valori numerice sau logice), iar referințele sunt nume care identifică obiecte.

Tipuri primitive

În Java, tipurile primitive sunt:

Nume Categorie Număr de biți Valori posibile
byte întreg 8 -128 : 127
short întreg 16 -32768 : 32767
int întreg 32 -2147483648 : 2147483647
long întreg 64 -9223372036854775808 : 9223372036854775807
char caracter 16 Orice caracter Unicode
boolean logic 8 true, false
float virgulă mobilă 32 ±1.18 x 10-38 : ±3.4 x 1038
double virgulă mobilă 64 ±2.23 x 10-308 : ±1.80 x 10308

Variabilele de tip primitiv se declară în același fel ca cele din C. Ca exemplu:

int someInteger;
int someOtherInteger = 10;
float someFloat = 10.5f;
double someDouble = 5.3 + someFloat;
boolean condition = true;
char oneChar = 'g';
char newLineChar = '\n';

Atenție: În Java nu există tipuri de date fără semn.

Similar cu C, există și în Java operatori de cast pentru tipuri de date primitive. Unele operații de conversie sunt implicite (de la întreg la virgulă mobilă), dar unele trebuie specificate (de la virgulă mobilă la întreg, de la char la întreg), iar altele nu sunt posibile deloc (de la boolean la orice alt tip sau invers).

În Java, tipurile primitive numerice se inițializează implicit cu valoarea 0, iar cele logice cu valoarea false.

Tipuri referință

Variabilele de tip referință sunt identificatori ale unor obiecte. Două referințe pot identifica același obiect, dar o referință nu poate identifica două obiecte în același timp.

Regulă: Obiectele (inclusiv vectorii) se creează folosind operatorul new

Referințele se inițializează implicit cu valoarea null.

Referință la obiecte

Obiectele de orice tip (clasă), se creează folosind operatorul new conform următorului exemplu:

Object obj;
new Object();
obj = new Object();

Se observă linia 2, care instanțiază un obiect nou, de tipul clasei Object, dar nu există nici o referință la acest obiect nou creat. Astfel, imediat după instanțiere, memoria alocată este eliberată de către garbage collector, aceasta ne mai putând fi accesibilă. Linia 3 instanțiază un obiect nou, și variabila obj va fi referință la obiectul nou creat. Mai multe despre instanțierea obiectelor și constructori în capitolele care urmează.

Exemplu de program Schema bloc
//...
Object _obj1 = new Object(); //notam acest obiect cu ID1
Object _obj2 = new Object(); //notam acest obiect cu ID2
Object _obj3 = _obj1;        //referinta la acelasi obiect ID1
Object _obj4 = null;         //nu refera nici un obiect
Object _obj5;                //initializat implicit cu null
//...
Exemplu de variabile tip referință

Vectori multi-dimensionali

Și vectorii, în Java, se tratează ca niște obiecte, adică există variabile de tip referință care identifică zona de memorie alocată pentru vector.

Atenție: În cazul instanțierii vectorilor de referințe (unde fiecare locație este o referință, și nu un tip primitiv de date), operatorul new alocă memorie doar pentru vector, nu și pentru fiecare locație în parte.

Atenție: Ca și în C, numărătoarea elementelor dintr-un vector începe de la 0. Astfel, pentru un vector de 5 elemente, există pozițiile 0, 1, 2, 3 și 4.

Exemplu de program Schema bloc
int[] _array1;
_array1 = new int[5];
_array1[3] = 10;
Object[] _array2 = new Object[10];
_array2[2] = new Object();
int[][] _array3 = new int[5][3];
_array3[1][1] = 5;
char[][][] _array4;
Exemplu de variabile tip referință - vectori

Clasa Java

Clasa este tipul de bază în Java, ca și în orice alt limbaj bazat pe obiecte.

Regulă: Nimic nu poate exista în afara unei clase sau unei interfețe.


Regulă: Orice fișier conține o singură clasă principală.

Cuvântul cheie care definește o clasă este class, acesta fiind urmat pe numele clasei și de implementarea acesteia între acolade.

Convenție: Orice nume de clasă sau interfață începe cu literă mare.
class SomeClass{
    // here comes the implementation of the class
}

Definiția câmpurilor

Definiția metodelor

Membrii statici

Modificatori speciali pentru membrii

Modificatori de access

Modificatorul final

Modificatorul abstract

Interfața Java

Construcții repetitive

Expresia for

Expresia while

Expresia do - while

Instrucțiunile break & continue

Construcții condiționale

Operatorul condițional (?)

Expresia if - else

Expresia switch

Operatori