1. Konstanter
Mange andre programmeringsspråk har konstanter , det vil si variabler hvis verdier ikke kan endres . Vanligvis brukes de til en slags grunnleggende ting som antall Pi
eller antall dager i månedene av året. Når det er sagt, i prinsippet kan en programmerer gjøre enhver variabel til en konstant, hvis han eller hun bestemmer at det er nødvendig.
Så hvordan erklærer du en uforanderlig variabel (konstant) i Java? Det er et spesielt nøkkelord for dette: final
. Å lage en uforanderlig variabel ser ut på samme måte som å lage en vanlig. Den eneste forskjellen er at før variabelens type må du skrive ordet final
, slik:
final Type name = value;
Hvis du prøver å tilordne en annen verdi til en final
variabel, vil programmet ganske enkelt ikke kompilere.
En final
variabel må initialiseres (en verdi må tildeles den) når den er deklarert. Det er ett unntak fra denne regelen: du kan flytte initialisering av en statisk klassevariabel inn i en konstruktør. Men du vil lære om dette på nivå 10 .
For å redusere antall nøkkelord bruker Java-utviklere ordet final
til mer enn bare å deklarere konstanter. final
kan også gjelde for metoder og til og med klasser. Metoder som er erklært som final
kan ikke overstyres, og en klasse som er erklært som final
kan ikke arves.
Modifikatoren final
kan legges til før alle variabler: lokale variabler, metodeparametere, klassefelt og statiske klassevariabler.
Merk at final
før et variabelnavn bare er beskyttelse mot eventuelle endringer i den variabelen . Hvis en variabel lagrer en referanse til et objekt, kan objektet fortsatt endres.
Eksempel:
|
Vi lager en array. Dette er ikke tillatt: variabelen data er deklarert som final . Men du kan gjøre dette. Og også dette. |
Globale konstanter
Hvis du bestemmer deg for å deklarere globale konstanter i programmet ditt, må du lage statiske klassevariabler og lage dem public
og final
. Det er en spesiell stil for navnene på slike variabler: de er skrevet med store bokstaver, med et understrekingstegn som brukes til å skille ord.
Eksempler:
class Solution
{
public static final String SOURCE_ROOT = "c:\\projects\\my\\";
public static final int DISPLAY_WIDTH = 1024;
public static final int DISPLAY_HEIGHT = 768;
}
2. Variabel skyggelegging
Som vi sa før, kan du ikke lage flere lokale variabler med samme navn i samme metode. I forskjellige metoder kan du.
Men her er det du sannsynligvis ikke vet: forekomstvariabler og lokale metodevariabler kan ha samme navn.
Eksempel:
Kode | Variabel synlighet |
---|---|
|
|
I add
metoden erklærte vi en lokal variabel kalt sum
. Inntil slutten av metoden skygger (eller maskerer ) sum
forekomstvariabelen.
Ok, sier du, det er på en måte å forvente. Men det er ikke slutten på historien. Det viser seg at hvis en forekomstvariabel er skyggelagt av en lokal variabel, er det fortsatt en måte å referere til forekomstvariabelen i metoden. Vi gjør dette ved å skrive nøkkelordet this
før navnet:
this.name
Her er et eksempel der navnekonflikten er løst:
Kode | Variabel synlighet |
---|---|
|
|
Variablene count
og sum
er tilgjengelige overalt med eller uten nøkkelordet this
. På linjer der den sum
lokale variabelen skygger for sum
forekomstvariabelen, sum
kan forekomstvariabelen bare nås ved å bruke this
nøkkelordet.
Hvis en statisk klassevariabel i stedet for en forekomstvariabel er skyggelagt, må du få tilgang til den gjennom klassenavnet i stedet for nøkkelordet this
:
ClassName.name
Eksempel:
Kode | Variabel synlighet |
---|---|
|
|
Du kan få tilgang til count
og sum
statiske variabler overalt med eller uten å bruke klassenavnet Solution
som et prefiks. På de linjene der den sum
lokale variabelen skygger for sum
forekomstvariabelen, sum
er tilgang til forekomstvariabelen bare mulig når den brukes Solution
som et prefiks.
3. Variabler inne i en for
loop
Og enda et lite, men interessant faktum.
Det er også et sted hvor en variabel er deklarert på en spesiell måte - inne i en for
loop .
Du husker kanskje at en for
sløyfe vanligvis har en tellervariabel i parentes. Og hva blir synligheten til denne variabelen? Tross alt er det ikke i løkkens kropp. Er det hele metoden? Eller ikke?
Det riktige svaret er: en variabel deklarert i overskriften til en for
løkke er bare synlig i løkkens hoveddel og i løkkens overskriftfor
.
Eksempel:
Kode | Variabel synlighet |
---|---|
|
|
Så du kan alltid skrive løkker etter hverandre i koden din og bruke tellervariabler med samme navn - det vil ikke skape noen problemer.
Eksempel:
Kode | Variabel synlighet |
---|---|
|
|
GO TO FULL VERSION