Variabler Bereich in Java

1. Übersicht

In Java hat wie in jeder Programmiersprache jede Variable einen Gültigkeitsbereich. Dies ist das Segment des Programms, in dem eine Variable verwendet werden kann und gültig ist.

In diesem Tutorial werden die verfügbaren Bereiche in Java vorgestellt und die Unterschiede zwischen ihnen erläutert.

2. Klassenumfang

Jede Variable, die in den Klammern ( {} ) einer Klasse mit dem Modifikator " Privater Zugriff", jedoch außerhalb einer Methode deklariert ist , hat einen Klassenbereich. Infolgedessen können diese Variablen überall in der Klasse verwendet werden, jedoch nicht außerhalb :

public class ClassScopeExample { private Integer amount = 0; public void exampleMethod() { amount++; } public void anotherExampleMethod() { Integer anotherAmount = amount + 4; } }

Wir können sehen , dass ClassScopeExample eine Klasse Variable Menge , die innerhalb der Klasse Methoden zugegriffen werden kann.

Wenn wir nicht privat verwenden , ist der Zugriff über das gesamte Paket möglich. Weitere Informationen finden Sie im Artikel zu Zugriffsmodifikatoren.

3. Methodenumfang

Wenn eine Variable innerhalb einer Methode deklariert wird, hat sie einen Methodenbereich und ist nur innerhalb derselben Methode gültig:

public class MethodScopeExample { public void methodA() { Integer area = 2; } public void methodB() { // compiler error, area cannot be resolved to a variable area = area + 2; } }

In Methode A haben wir eine Methodenvariable namens area erstellt . Aus diesem Grund können wir den Bereich innerhalb von methodA verwenden , aber wir können ihn nirgendwo anders verwenden.

4. Umfang der Schleife

Wenn wir eine Variable innerhalb einer Schleife deklarieren, hat sie einen Schleifenbereich und ist nur innerhalb der Schleife verfügbar:

public class LoopScopeExample { List listOfNames = Arrays.asList("Joe", "Susan", "Pattrick"); public void iterationOfNames() { String allNames = ""; for (String name : listOfNames) { allNames = allNames + " " + name; } // compiler error, name cannot be resolved to a variable String lastNameUsed = name; } }

Wir können sehen, dass die Methode iterationOfNames eine Methodenvariable namens name hat . Diese Variable kann nur innerhalb der Schleife verwendet werden und ist außerhalb dieser Schleife nicht gültig.

5. Umfang der Halterung

Wir können zusätzliche Bereiche überall in Klammern ( {} ) definieren:

public class BracketScopeExample { public void mathOperationExample() { Integer sum = 0; { Integer number = 2; sum = sum + number; } // compiler error, number cannot be solved as a variable number++; } }

Die variable Zahl ist nur gültig innerhalb der Klammern.

6. Bereiche und variable Schattierung

Stellen Sie sich vor, wir haben eine Klassenvariable und möchten eine Methodenvariable mit demselben Namen deklarieren:

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

Wenn wir zum ersten Mal einen Titel drucken, wird "Baeldung" gedruckt. Deklarieren Sie danach eine gleichnamige Methodenvariable und weisen Sie ihr den Wert „John Doe “ zu.

Die Titel Methode Variable überschreibt die Möglichkeit zum Zugriff auf die Klassenvariable Titel wieder. Deshalb wird beim zweiten Mal „John Doe gedruckt .

Verwirrend, richtig? Dies wird als variable Abschattung bezeichnet und ist keine gute Vorgehensweise. Es ist besser , das Präfix zu verwenden diese , um den Zugriff auf Titelklassenvariable, wie this.title .

7. Fazit

Wir haben die verschiedenen Bereiche kennengelernt, die in Java existieren.

Wie immer ist der Code auf GitHub verfügbar.