So verwalten Sie den Variablenbereich in Java
Der Gültigkeitsbereich bezieht sich auf den Zugriffsbereich einer Variablen. Sie legt fest, wo eine deklarierte Variable verwendet werden kann. Der Versuch, eine Variable außerhalb ihres Gültigkeitsbereichs zu verwenden, führt zu einem Kompilierzeitfehler.
Als Faustregel gilt, dass Sie beim Bestimmen des Gültigkeitsbereichs einer Variablen immer das Prinzip der geringsten Berechtigung verwenden sollten. Nach diesem Prinzip sollte eine Variable nur so viel Sichtbarkeit haben, wie sie für ihre Arbeit benötigt und nicht mehr.
Geltungsbereich
Es gibt vier Grundregeln, die den Umfang der Erklärungen regeln.
Regel 1
Wenn Sie einen Parameter deklarieren, befindet sich sein Gültigkeitsbereich im Hauptteil der Funktion.
String withdraw (int amount){
// this is the scope of the parameter "amount" ie from the left brace ,{, to the the right one, }
}
Regel 2
Der Gültigkeitsbereich einer in einer Funktion deklarierten Variablen reicht von dem Teil, in dem sie deklariert wird, bis zum Ende des Funktionsrumpfs. Diese im Hauptteil einer Funktion deklarierte Variable wird als lokale Variable bezeichnet. Daher hat diese Variable einen lokalen Gültigkeitsbereich.
String withdraw (int amount){
String currency;
int transaction_fee = 2; // this is a local variable and it's scope begins from here till the right brace, }
}
Regel 3
Eine im Header einer for-Anweisung deklarierte Variable hat ebenfalls einen lokalen Gültigkeitsbereich.
for ( int y=11;y <20; y++){
// variable y has local scope
}
An dieser Stelle ist es wichtig zu erwähnen, dass Sie einen Kompilierungsfehler erhalten, wenn Ihre Methode zwei lokale Variablen mit demselben Namen hat.
Regel 4
Der Gültigkeitsbereich einer Methode oder eines Klassenfelds ist der gesamte Klassenrumpf. Dadurch können die Instanzmethoden einer Klasse die Methoden oder Felder der Klasse verwenden.
Sehen Sie sich das Beispiel unten an. Es ist eine vollständig funktionierende Codeimplementierung der obigen Regeln. Sie können es kompilieren und auf Ihrem PC ausführen.
class Account {
int y = 2; // class field
static void withdraw(int amount){
String z;
for(int y=1; y<=3; y++){ // line 7
System.out.println("
Remember to hide your PIN.");}
}
public static void main(String args[]){
withdraw(50); }
}
Beachten Sie das Klassenfeld und den Code in Zeile 7. Wenn Sie einen Parameter oder eine lokale Variable mit einem Namen deklarieren, der dem eines der Klassenfelder ähnelt, wird die Ausführung trotzdem normal und ohne Fehler fortgesetzt. Dies wird als Schattenbildung bezeichnet.
Im obigen Beispiel wird die Variable y zweimal deklariert und dennoch meldet der Compiler keine Fehler. Der Compiler "versteckt" zunächst die Klassenfelder, bis der Block ausgeführt wird.
Manchmal müssen Sie möglicherweise auf ein schattiertes Feld im Block zugreifen. Dies kann auf zwei Arten erfolgen:
a) Sie können das Schlüsselwort this verwenden, wenn Sie es mit einer Instanzvariablen zu tun haben. Siehe das Beispiel unten:
this.x : x ist eine Instanzvariable
b) Wenn die Variable, auf die Sie zugreifen möchten, eine statische Klassenvariable ist, verwenden Sie die folgende Syntax, um darauf zuzugreifen:
ClassName.x // x is a static variable
Klassenumfang
Normalerweise hat jedes Objekt seine eigenen Instanzvariablen. Es gibt Szenarien, in denen Sie dieselbe Kopie der Variablen benötigen, die für alle Instanzen freigegeben ist. In diesem Fall müssen Sie sie statisch machen.
Klassenmember, die mit dem Schlüsselwort static definiert sind, haben einen Klassenbereich. Daher haben statische Variablen einen Klassenbereich. Auf sie kann mit allen Methoden der Klasse zugegriffen werden. Um auf die öffentlichen statischen Variablen einer Klasse zuzugreifen, verwenden Sie:
ClassName.variable_name
Andererseits kann auf die privaten statischen Variablen einer Klasse nur durch die Methoden der Klasse zugegriffen werden.
Holen Sie sich Klassen und Konstruktoren in Ihren Bereich
Manchmal benötigen Sie möglicherweise eine Variable, die beim Zugriff nach der Initialisierung nicht geändert wird. Verwenden Sie im Bedarfsfall das Schlüsselwort final . Platzieren Sie es einfach vor der Variablen, die Sie deklarieren, um es zu verwenden.
final double PI = 3.14159;
Der Versuch, eine als final deklarierte Variable zu ändern, führt zu einem Kompilierzeitfehler. Es ist auch wichtig für Sie zu wissen, dass Sie eine letzte Variable sofort initialisieren müssen. Sie können es später nicht initialisieren.
An dieser Stelle sollten Sie sich mit dem Erlernen von Konstruktoren und Klassen in Java beschäftigen.