Există multe valori în lumea reală care nu se vor schimba niciodată. Un pătrat va avea întotdeauna patru laturi, PI până la trei zecimale va fi întotdeauna 3.142, iar o zi va avea întotdeauna 24 de ore. Aceste valori rămân constante. Când scrieți un program, are sens să le reprezentați în același mod - ca valori care nu vor fi modificate odată ce au fost alocate unei variabile. Aceste variabile sunt cunoscute sub numele de constante.
În declararea variabilelor am arătat că este ușor să atribuiți o valoare unei variabile int:
numar intOfHoursInADay = 24;
Știm că această valoare nu se va schimba niciodată în lumea reală, așa că ne asigurăm că nu intră în program. Acest lucru se realizează prin adăugarea modificatorului de cuvinte cheie
final:
final int NUMBER_OF_HOURS_IN_A_DAY = 24;
În plus față de
finalCuvânt cheie, ar fi trebuit să observați că numele variabilei s-a schimbat cu majuscule, conform convenției de denumire Java standard. Acest lucru face mult mai ușor să localizați ce variabile sunt constante în codul dvs..
Dacă acum încercăm și schimbăm valoarea lui
NUMBER_OF_HOURS_IN_A_DAY:
final int NUMBER_OF_HOURS_IN_A_DAY = 24;
vom primi următoarea eroare de la compilator:
nu poate atribui o valoare variabilei finale NUMBER_OF_HOURS_IN_A_DAY
Același lucru este valabil pentru oricare dintre celelalte variabile de tip de date primitive. Pentru a le transforma în constante, adăugați doar
finalcuvânt cheie la declarația lor.
Ca și în cazul variabilelor normale, doriți să limitați sfera constantelor la locul în care sunt utilizate. Dacă valoarea constantei este necesară doar într-o metodă, declarați-o acolo:
public static int CalculHoursInDays (zile int)
final int NUMBER_OF_HOURS_IN_A_DAY = 24;
zile de întoarcere * NUMBER_OF_HOURS_IN_A_DAY;
Dacă este folosită de mai multe metode, declarați-o în partea de sus a definiției clasei:
public class AllAboutHours
privat static final int NUMBER_OF_HOURS_IN_A_DAY = 24;
public int calculatorHoursInDays (zile int)
zile de întoarcere * NUMBER_OF_HOURS_IN_A_DAY;
public int calculHoursInWeeks (săptămâni int)
final int NUMBER_OF_DAYS_IN_A_WEEK = 7;
săptămâni de întoarcere * NUMBER_OF_DAYS_IN_A_WEEK * NUMBER_OF_HOURS_IN_A_DAY;
Observați cum am adăugat și modificatorii de cuvinte cheie
privatși
staticla declararea variabilă a
NUMBER_OF_HOURS_IN_A_DAY. Aceasta înseamnă că constanta poate fi utilizată doar de clasa sa (de aici și
privatdomeniul de aplicare), dar puteți să-l faceți la fel de ușor
publicconstantă dacă doriți ca alte clase să aibă acces la ea.
staticcuvântul cheie este să permită distribuirea valorii constantei între toate instanțele unui obiect. Deoarece este aceeași valoare pentru fiecare obiect creat, trebuie să aibă doar o singură instanță.
Este foarte important să vă dați seama că atunci când vine vorba de obiecte, Java nu acceptă constantele așa cum v-ați putea aștepta. Dacă atribuiți o variabilă unui obiect folosind butonul
finalcuvânt cheie înseamnă că variabila va păstra vreodată referința la acel obiect. Nu poate fi modificat pentru a face referire la un alt obiect. Cu toate acestea, aceasta nu înseamnă că conținutul obiectului nu se poate schimba.
Este posibil să fi observat în lista de cuvinte rezervate că există un cuvânt cheie numit
const. Aceasta nu este folosită cu constante, de fapt, nu este folosită deloc în limbajul Java.