Variabelt omfang i Java

1. Oversikt

I Java, som i ethvert programmeringsspråk, har hver variabel et omfang. Dette er segmentet av programmet der en variabel kan brukes og er gyldig.

I denne opplæringen vil vi introdusere tilgjengelige omfang i Java og diskutere forskjellene mellom dem.

2. Klassens omfang

Hver variabel deklarert innenfor parentesene til en klasse ( {} ) med privat tilgangsmodifikator, men utenfor hvilken som helst metode, har klasseomfang. Som et resultat, disse variablene kan brukes overalt i klassen, men ikke utenfor den:

offentlig klasse ClassScopeExample {private Heltalsbeløp = 0; public void exampleMethod () {amount ++; } offentlig annullere anotherExampleMethod () {Integer anotherAmount = beløp + 4; }}

Vi kan se det ClassScopeExample har en klassevariabel beløp som kan nås innenfor klassens metoder.

Hvis vi ikke bruker privat, vil den være tilgjengelig fra hele pakken. Se artikkelen om tilgangsmodifikatorer for mer informasjon.

3. Metodeomfang

Når en variabel blir deklarert i en metode, har den metodens omfang og det vil bare være gyldig innenfor samme metode:

public class MethodScopeExample {public void methodA () {Integer area = 2; } public void methodB () {// kompilatorfeil, areal kan ikke løses til et variabelt areal = areal + 2; }}

I metode A., opprettet vi en metodevariabel kalt område. Av den grunn kan vi bruke område innsiden metode A., men vi kan ikke bruke den noe annet sted.

4. Loop Scope

Hvis vi deklarerer en variabel i en løkke, vil den ha et løkkeomfang og vil bare være tilgjengelig inne i løkken:

offentlig klasse LoopScopeExample {List listOfNames = Arrays.asList ("Joe", "Susan", "Pattrick"); public void iterationOfNames () {String allNames = ""; for (String name: listOfNames) {allNames = allNames + "" + name; } // kompilatorfeil, navn kan ikke løses til en variabel String lastNameUsed = navn; }}

Vi kan se den metoden iterationOfNames har en metodevariabel kalt Navn. Denne variabelen kan bare brukes inne i sløyfen og er ikke gyldig utenfor den.

5. Brakets omfang

Vi kan definere flere omfang hvor som helst ved hjelp av parentes ({}):

public class BracketScopeExample {public void mathOperationExample () {Integer sum = 0; {Heltall = 2; sum = sum + nummer; } // kompilatorfeil, nummer kan ikke løses som et variabelnummer ++; }}

Variabelen Nummer er bare gyldig innenfor parentes.

6. Omfang og variabel skyggelegging

Tenk deg at vi har en klassevariabel, og vi vil erklære en metodevariabel med samme navn:

offentlig klasse NestedScopesExample {String title = "Baeldung"; public void printTitle () {System.out.println (title); String title = "John Doe"; System.out.println (tittel); }}

Første gang vi skriver ut tittel, vil den trykke “Baeldung”. Deretter erklærer du en metodevariabel med samme navn og tilordner den verdien “John Doe“.

Tittelmetodevariabelen tilsidesetter muligheten for tilgang til klasse variabel tittel en gang til. Det er grunnen til at den andre gangen vil trykke “John Doe.

Forvirrende, ikke sant? Dette kalles variabel skyggelegging og er ikke en god praksis. Det er bedre å bruke prefikset dette for å få tilgang til tittel klassevariabel, som dette. tittel.

7. Konklusjon

Vi lærte de forskjellige omfangene som finnes i Java.

Som alltid er koden tilgjengelig på GitHub.


$config[zx-auto] not found$config[zx-overlay] not found