Er zijn veel waarden in de echte wereld die nooit zullen veranderen. Een vierkant heeft altijd vier zijden, PI tot drie cijfers achter de komma is altijd 3.142 en een dag heeft altijd 24 uur. Deze waarden blijven constant. Bij het schrijven van een programma is het logisch om ze op dezelfde manier weer te geven - als waarden die niet worden gewijzigd nadat ze aan een variabele zijn toegewezen. Deze variabelen staan bekend als constanten.
Bij het declareren van variabelen hebben we laten zien dat het eenvoudig is om een waarde toe te wijzen aan een int-variabele:
int numberOfHoursInADay = 24;
We weten dat deze waarde in de echte wereld nooit zal veranderen, dus we zorgen ervoor dat dit niet in het programma voorkomt. Dit wordt gedaan door de trefwoordmodifier toe te voegen
laatste:
laatste int NUMBER_OF_HOURS_IN_A_DAY = 24;
Naast de
laatstezoekwoord dat u zou moeten hebben gemerkt dat het geval van de variabelenaam is gewijzigd in hoofdletters volgens de standaard Java-naamgevingsconventie. Dit maakt het veel gemakkelijker om te zien welke variabelen constanten in uw code zijn.
Als we nu proberen de waarde van te wijzigen
NUMBER_OF_HOURS_IN_A_DAY:
laatste int NUMBER_OF_HOURS_IN_A_DAY = 24;
we krijgen de volgende foutmelding van de compiler:
kan geen waarde toewijzen aan de laatste variabele NUMBER_OF_HOURS_IN_A_DAY
Hetzelfde geldt voor alle andere primitieve gegevenstypevariabelen. Om er constanten van te maken, voeg je gewoon de
laatstetrefwoord naar hun verklaring.
Net als bij normale variabelen wilt u het bereik van constanten beperken tot waar ze worden gebruikt. Als de waarde van de constante alleen nodig is in een methode, vermeld deze dan daar:
public static int calculHoursInDays (int dagen)
laatste int NUMBER_OF_HOURS_IN_A_DAY = 24;
retourdagen * NUMBER_OF_HOURS_IN_A_DAY;
Als het door meer dan één methode wordt gebruikt, verklaar het dan bovenaan de klassedefinitie:
openbare klasse AllAboutHours
private statische finale int NUMBER_OF_HOURS_IN_A_DAY = 24;
public int calculHoursInDays (int dagen)
retourdagen * NUMBER_OF_HOURS_IN_A_DAY;
public int calculHoursInWeeks (int weken)
laatste int NUMBER_OF_DAYS_IN_A_WEEK = 7;
retourweken * NUMBER_OF_DAYS_IN_A_WEEK * NUMBER_OF_HOURS_IN_A_DAY;
Merk op hoe ik ook de trefwoordmodificatoren heb toegevoegd
privaaten
statischbij de variabele aangifte van
NUMBER_OF_HOURS_IN_A_DAY. Dit betekent dat de constante alleen door zijn klasse kan worden gebruikt (vandaar de
privaatscope) maar je zou er net zo gemakkelijk een kunnen maken
openbaarconstant als u wilt dat andere klassen hier toegang toe hebben. De
statischsleutelwoord is om toe te staan dat de waarde van de constante wordt gedeeld tussen alle instanties van een object. Omdat het dezelfde waarde is voor elk gemaakt object, hoeft het maar één exemplaar te hebben.
Het is heel belangrijk om te beseffen dat Java wat betreft objecten geen constanten ondersteunt zoals je zou verwachten. Als u een variabele aan een object toewijst met behulp van de
laatstetrefwoord betekent dit dat de variabele alleen de verwijzing naar dat object zal bevatten. Het kan niet worden gewijzigd om naar een ander object te verwijzen. Dit betekent echter niet dat de inhoud van het object niet kan veranderen.
Het is je misschien opgevallen in de lijst met gereserveerde woorden dat er een trefwoord wordt genoemd
const. Dit wordt niet gebruikt met constanten, het wordt zelfs helemaal niet gebruikt in de Java-taal.