Variabile si tipuri de date primitive

Arhiva forumului

Moderatori: Moderator Global, Administrator

Fabr3gas

Tipuri de variabile

Discutia cu privire la ce este un obiect te-a introdus in domeniul claselor, dar probabil ca inca mai ai cateva intrebari, cum ar fi:

* Care sunt regulile si conventiile aplicabile la denumirea unui camp?
* In afara de int, ce alte tipuri de date mai exista?
* Campurile trebuiesc initializate atunci cand sunt declarate?
* Ce valoare are o proprietate daca nu este initializata in mod explicit?

Vei afla raspunsurile la astfel de intrebari in acest tutorial, dar inainte de aceasta trebuiesc amintite cateva detalii tehnice. In cadrul limbajului de programare Java, sunt utilizati atat termenii camp sau proprietate, cat si variabila. Aceasta reprezinta o sursa clasica de confuzie printre noii dezvoltatori, deoarece toti termeni par deseori a se referi la acelasi aspect.

Limbajul de programare Java defineste urmatoarele tipuri de variabile:
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_actuala a 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.

Parametri

Deja ai vazut exemple de parametri, atat in clasa Bicycle, cat si in metoda main din cadrul aplicatiei "Hello World!". Aminteste-ti ca semnatura metodei main este public static void main(String[] args). Aici, variabila args reprezinta parametrul respectivei metode. Trebuie sa-ti amintesti un aspect important si anume ca parametrii sunt intotdeauna clasificati ca fiind "variabile", nu "campuri". Aceasta se aplica si altor structuri care accepta parametri (cum ar fi constructorii si manipulatorii exceptiilor), despre care vei invata mai tarziu in acest tutorial.

Acestea fiind spuse, restul tutorialului utilizeaza urmatoarele reguli atunci cand este vorba despre campuri si variabile. Daca vorbim despre campuri in general (excluzand variabilele locale si parametrii), putem spune pur si simplu campuri. Daca ne referim la toate cele de mai sus, putem spune variabile. Daca in context este necesara o distinctie, vom utiliza termeni specifici (camp static, variabile locale etc.), dupa cum este necesar. Mai poti intalni ocazional si termenul de membru. Campurile, metodele unui obiect, precum si clasele imbricate, sunt denumite in mod colectiv membrii obiectelui respectiv.

Denumirea variabilelor

Fiecare limbaj de programare isi are propriul set de reguli si conventii pentru denumirile pe care le poti utiliza, iar Java nu face exceptie. Regulile si conventiile pentru denumirea variabilelor pot fi rezumate astfel:

* Denumirile variabilelor sunt case-sensitive (fac diferentierea intre majuscule si litere mici).
* Denumirea unei variabile poate fi orice identificator legal, adica orice secventa de litere si cifre Unicode, de lungime nelimitata, incepand cu o litera, semnul dolar ($) sau cu semnul underscore (_). Oricum, conventia este ca intotdeauna sa incepi denumirea unei variabile cu o litera, nu cu $ sau _. In plus, semnul dolar, prin conventie, nu este deloc utilizat. Poti observa anumite situatii in care denumirile generate automat vor contine semnul dolar, dar denumirile variabilelor tale nu ar trebui sa il contina niciodata. O conventie similara exista pentru caracterele underscore; desi este corect din punct de vedere tehnic ca denumirea variabilelor sa inceapa cu _, aceasta practica nu este incurajata. Spatiile goale nu sunt permise.
* Urmatoarele caractere pot fi litere, cifre, semne dolar sau caractere underscore. Conventiile (si practica) se aplica si acestei reguli. La alegerea unei denumiri pentru variabile, utilizeaza denumiri complete in loc de abrevieri criptice. Astfel, codul va fi mai usor de citit si de inteles. In multe cazuri, codul tau va deveni explicit; campurile denumite cadenta, viteza si treapta, de exemplu, sunt cu mult mai intuitive decat versiunile abreviate cum ar fi c, v si t. De asemenea, nu uita ca denumirea aleasa nu trebuie sa fie un cuvant cheie sau un cuvant rezervat.
* Daca denumirea aleasa contine doar un cuvant, scrie-l cu litere mici. Daca sunt mai multe cuvinte, scrie cu litere mari iniatialele fiecarui cuvant incepand cu al doilea (de exemplu vitezaCurenta sau treaptaViteza).
* Daca variabila ta stocheaza o valoare constanta, cum ar fi static final int NUM_VITEZE = 6, conventia se modifica usor, scriind numai cu majuscule si despartind cuvintele cu ajutorul semnului underscore. Prin conventie, caracterul underscore nu este utilizat niciodata in alta parte.

Tipuri de date primitive

Limbajul de programare Java presupune ca toate variabilele sunt declarate inainte de a fi folosite. Aceasta implica declararea tipului si a denumirii variabilei, dupa cum ai observat deja:

Cod: Selectaţi tot

int treapta = 1;
Aceasta ii spune programului ca exista un camp denumit treapta ce contine numere intregi si are o valoare initiala 1. Tipul de date al unei variabile determina valorile pe care le poate contine, precum si operatiile care pot fi efectuate asupra lor. Pe langa int, limbajul de programare Java suporta alte sapte tipuri de date primitive. Un tip primitiv este predefinit de catre limbaj si este denumit printr-un cuvant cheie rezervat. Cele 8 tipuri de date primitive suportate de catre limbajul de programare Java sunt:
byte

Tipul de date byte este un numar intreg cu valori cuprinse intre -128 si 127 (inclusiv). Tipul de date byte poate fi util pentru a salva memorie in vectori de dimensiuni mari, unde economisirea memoriei chiar conteaza. El poate fi utilizat si in locul int, pentru a semnala ca valorile unei variabile nu depasesc limitele acestui tip de date.
short

Tipul de date short este un numar intreg cu valori intre -32,768 si 32,767 (inclusiv). Ca si in cazul byte, poti utiliza un short pentru a salva memoria in siruri mari, in cazurile in care economisirea memoriei chiar conteaza.
int

Tipul de date int este un numar intreg cuprins in intervalul (-2.147.483.648, 2.147.483.647]. Pentru valori intregi, acest tip de date este alegerea standard, in afara cazului in care exista un motiv (ca mai sus) pentru a alege altceva. Acest tip de date va fi probabil suficient de mare pentru numerele pe care le va utiliza programul tau, dar daca ai nevoie de o arie mai larga de valori, utilizeaza long.
long

Tipul de date long este un numar intreg intre 9.223.372.036.854.775.808 si 9.223.372.036.854.775.807. Utilizeaza acest tip de date daca ai nevoie de o arie de valori mai larga decat cea furnizata de int.
float

Tipul de date float reprezinta numere rationale in virgula mobila, simpla precizie, pe 32-biti IEEE 754. La fel ca in cazul recomandarilor pentru byte si short, utilizeaza float (in loc de double) daca vrei sa economisesti memorie in siruri lungi de numere cu virgula mobila. Acest tip de date nu ar trebui utilizat pentru valori exacte, cum ar fi cursul valutar sau rata de conversie intre monede. Pentru acestea, utilizeaza clasa java.math.BigDecimal.
double

Tipul de date double este o reprezentare in virgula mobila, simpla precizie, pe 64-biti IEEE 754. Acest tip de date este alegerea standard pentru valori rationale. Dupa cum am mentionat mai sus, acest tip de date nu ar trebui utilizat pentru valori exacte.
Încuiat

Înapoi la “Arhiva forum”