Variabelt omfang i Java

1. Oversigt

I Java, som i ethvert programmeringssprog, har hver variabel et omfang. Dette er det segment af programmet, hvor en variabel kan bruges og er gyldig.

I denne vejledning introducerer vi de tilgængelige omfang i Java og diskuterer forskellene mellem dem.

2. Klassens omfang

Hver variabel erklæret inden for en klasses parentes ( {} ) med privat adgangsmodifikator, men uden for enhver metode, har klasses omfang. Som resultat, disse variabler kan bruges overalt i klassen, men ikke uden for den:

offentlig klasse ClassScopeExample {privat heltal beløb = 0; offentligt ugyldigt eksempelMetode () {beløb ++; } offentlig annullerer anotherExampleMethod () {Integer anotherAmount = beløb + 4; }}

Det kan vi se ClassScopeExample har en klasse variabel beløb der kan tilgås inden for klassens metoder.

Hvis vi ikke bruger privat, vil det være tilgængeligt fra hele pakken. Se artiklen om adgangsmodifikatorer for at få yderligere oplysninger.

3. Metodeomfang

Når en variabel erklæres inde i en metode, har den metodens omfang og det vil kun være gyldigt inden for samme metode:

public class MethodScopeExample {public void methodA () {Integer area = 2; } offentlig ugyldig metodeB () {// kompilatorfejl, område kan ikke løses til et variabelt område = område + 2; }}

I metode A., vi oprettede en metodevariabel kaldet areal. Af den grund kan vi bruge areal inde metode A., men vi kan ikke bruge det andre steder.

4. Loop Scope

Hvis vi erklærer en variabel inde i en sløjfe, vil den have et loop-omfang og vil kun være tilgængelig inden i sløjfen:

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

Vi kan se den metode iterationOfNames har en metodevariabel kaldet navn. Denne variabel kan kun bruges inde i sløjfen og er ikke gyldig uden for den.

5. Beslagets anvendelsesområde

Vi kan definere yderligere omfang overalt ved hjælp af parenteser ({}):

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

Variablen nummer er kun gyldig inden for parenteserne.

6. Omfang og variabel skygge

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

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

Første gang, vi udskriver titel, den udskriver "Baeldung". Derefter erklæres en metodevariabel med samme navn og tildeles værdien ”John Doe“.

Titelmetodevariablen tilsidesætter muligheden for at få adgang til klasse variabel titel igen. Derfor udskriver den anden gang ”John Doe.

Forvirrende, ikke? Dette kaldes variabel skygge og er ikke en god praksis. Det er bedre at bruge præfikset det her for at få adgang til titel klasse variabel, ligesom denne.titel.

7. Konklusion

Vi lærte de forskellige anvendelsesområder, der findes i Java.

Som altid er koden tilgængelig på GitHub.