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 Pieller 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 finalvariabel, vil programmet ganske enkelt ikke kompilere.
En finalvariabel 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 finaltil mer enn bare å deklarere konstanter. finalkan også gjelde for metoder og til og med klasser. Metoder som er erklært som finalkan ikke overstyres, og en klasse som er erklært som finalkan ikke arves.
Modifikatoren finalkan legges til før alle variabler: lokale variabler, metodeparametere, klassefelt og statiske klassevariabler.
Merk at finalfø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 dataer 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 publicog 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 addmetoden erklærte vi en lokal variabel kalt sum. Inntil slutten av metoden skygger (eller maskerer ) sumforekomstvariabelen.
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 thisfø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 sumforekomstvariabelen, sum kan forekomstvariabelen bare nås ved å bruke thisnø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 Solutionsom et prefiks. På de linjene der den sumlokale variabelen skygger for sumforekomstvariabelen, sum er tilgang til forekomstvariabelen bare mulig når den brukes Solutionsom et prefiks.
3. Variabler inne i en forloop
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 forloop .
Du husker kanskje at en forslø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 forlø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