Tutorial Java 6 – #3 Definire variabile de tip primitiv

1 comment - This post in english

In acest tutorial Java 6 vom vedea care sunt tipurile primitive de date, cum se definesc variabile, care sunt valorile implicite si ce nume putem da acestor variabile.

In Java exista 2 tipuri de variabile:

  • primitive
  • obiecte sau referinte

In acest tutorial ne concentram asupra variabilelor de tip primitiv, iar obiectele (variabilele de tip referinta) vor fi descrise dupa tutorialul despre clase. Alte elemente prezentate in acest tutorial pot fi gasite in Tutorial Java 6 – Continut.

Tipurile primitive sunt tipuri de date fundamentale ce nu mai pot fi descompuse in alte subtipuri. In Java 6 exista 8 tipuri de date primitive:

Tip data

Dimensiune

Valori cu semn

Tip

byte 1 byte -128 –> 127 intreg
short 2 bytes -32768 –> 32767 intreg
int 4 bytes -2147483648 –> 2147483647 intreg
long 8 bytes -9,223,372,036,854,775,808 –> 9,223,372,036,854,775,807 intreg
float 4 bytes 7 cifre semnificative real simpla precizie
double 8 bytes 15 cifre semnificative real dubla precizie
char 2 bytes ‘\u0000’ –> ‘\uffff’
0 –> 65535
caracter Unicode pe 16 biti
boolean 1 bit true sau false logic

 

Pentru a defini o variabila se foloseste sintaxa:

tip_variabila nume_variabila;

unde:

tip_variabila – unul din cele 8 tipuri primitive sau un tip definit de programator prin clase;

nume_variabial – numele variabilei definit de programator;

 

Regulile de care se tine cont la definirea variabilelor:

  • numele variabilei trebuie sa inceapa cu o litera, linie de subliniere (_) sau cu simbolul dolar ($);
  • numele de variabila NU poate incepe cu o cifra;
  • dupa primul caracter se pot folosi cifre
  • numele de variabila NU poate fi un cuvant Java rezervat (Java keywords);
  • pot fi definite mai multe variabile in acelasi timp;
public class Variables {
    public static void main()
    {
        //variabile definite corect
        int vb1,vb2;
        float fvb2;
        double _temp;
        boolean $flag;
 
        //variabile definite gresit - eroare compilare
        byte 3vb;       // incepe cu o cifra
        long for;       //foloseste un cuvant cheie
    }
}

 

  • numele de variabile sunt alese de catre programator, insa pentru eficienta exista o serie de conventii cu privire la numele variabilelor: notatia Ungara, CamelCase; desi nu este obligatorie, in Java exista o recomandare cu privire la numele variabilelor; aceasta este derivata din CamelCase si presupune ca numele de variabile sa fie cat mai sugestive, iar daca sunt formate din mai multe cuvinte, doar primul cuvant se scrie cu litera mica;
        int iNumarCarti;        //notatie Ungara
        int NumarCarti;         //CamelCase
        int numarCarti;         //Java mixed case

 

Reguli pentru initializarea variabilelor

La initializarea unei variabile trebuie sa se tina seama de tipul acesteia, deoarece in Java NU este posibil atribuirea de valori de tip diferit decat cel al variabilei. De exemplu, instructiunea urmatoare genereaza eroare de compilare de tipul possible loss of precision:

float vb2 = 23.5;           //eroare compilare - possible loss of precision
int vb3 = 45.6;             //eroare compilare - possible loss of precision
boolean test = 23;          //eroare compilare  - incompatible types

 

In cazul variabilei de tip float, vb2, eroare este generata deoarece valorile reale constante sunt considerate de tip double. Corect este sa pui  f la sfarsitul valorii, adica 23.5f.

  • tipul valorii trebuie sa fie identic cu tipul variabilei;
  • pot fi initializate mai multe variabile in acelasi timp;
  • in Java singurele valori posibile pentru variabile boolene sunt true sau false (in C sau C++, orice valoare numerica diferita de 0 este considerata true);
  • valorile constante de tip float se definesc cu simbolul f la final deoarece, implicit, constantele reale sunt considerate de tip double;
  • simbolurile de tip caracter se definesc intre ‘ ’ (apostrof) si nu intre “ “ (ghilimele);
  • valorile reale pot fi definite si in format stiintific; de exemplu, 123.4 este echivalent cu 1.234e2;
  • valorile intregi in baza 8 sunt prefixate cu 0; de exemplu 021 este 17 in baza 10;
  • valorile intregi in baza 16 sunt prefixate cu 0x; de exemplu 0×11 este 17 in baza 10;
  • variabilele de tip char pot avea ca valori o serie de caractere speciale:

Caracter special

Valoare

\b backspace
\t tab
\n line feed
\f form feed
\r carriage return
\” ghilimele
\’ apostrof
\\ backslash

Exemple de initializari corecte de variabile cu tipuri de date primitive:

        int value1;
        int value2;
        value1 = value2 = 17;
        int  valueB8 = 021;
        int valueB16 = 0x11;
        float value3 = 123.4f;
        double value4 = 123.4;
        char c = 'a';
        char enter = '\r';
        boolean isNumber = true;
        long value5 = 17L;

 

Valori implicite pentru variabile in Java

Daca variabilele nu sunt initializate, atunci acestea iau valori implicite (NU in toate situatiile !):

Tip de data primitiv

Valoare default

Valori cu semn

Tip

byte 0 -128 –> 127 intreg
short 0 -32768 –> 32767 intreg
int 0 -2147483648 –> 2147483647 intreg
long 0L -9,223,372,036,854,775,808 –> 9,223,372,036,854,775,807 intreg
float 0.0f 7 cifre semnificative real simpla precizie
double 0.0d 15 cifre semnificative real dubla precizie
char ‘\u0000’ ‘\u0000’ –> ‘\uffff’

0 –> 65535

caracter Unicode pe 16 biti
boolean false true sau false logic

Important ! Variabilele locale (definite in interiorul unei metode) NU sunt initializate cu valori implicite de catre compilator. Valorile implicite din tabelul anterior sunt folosite pentru atributele obiectelor (valori definite la nivelul clasei). Utilizarea unei variabile locale neinitializata va genera eroare de compilare:

public static void main(){
   int sum;		//variabila locala definita in metoda main
   sum = sum + 10;     //eroare compilare
                       //variable sum might not have been initialized
}


  1. No comments yet.
(will not be published)