Gültigkeitsbereich (Scope)

**This is an old revision of the document!**

Natürlich! Hier ist eine Übersicht über den Unterschied zwischen lokalen und globalen Variablen in Java, zusammen mit einem Beispielcode, der nur for-Schleifen enthält.

Lokale Variablen

  • Definition: Variablen, die innerhalb einer Methode oder eines Blocks deklariert werden.
  • Sichtbarkeit: Nur innerhalb der Methode oder des Blocks, in dem sie deklariert wurden.
  • Lebensdauer: Existieren nur während der Ausführung der Methode oder des Blocks.

Globale Variablen (Instanz- und Klassenvariablen)

  • Definition: Variablen, die außerhalb von Methoden, aber innerhalb einer Klasse deklariert werden.
    • Instanzvariablen: Werden ohne das Schlüsselwort static deklariert.
    • Klassenvariablen: Werden mit dem Schlüsselwort static deklariert.
  • Sichtbarkeit: Abhängig von den Zugriffsmodifikatoren (private, protected, public), aber generell innerhalb der gesamten Klasse.
  • Lebensdauer: Existieren während der gesamten Lebensdauer der Instanz (bei Instanzvariablen) oder der Klasse (bei Klassenvariablen).

Beispielcode

public class VariableExample {
    // Globale Variable (Instanzvariable)
    private int globalCounter = 0;
 
    // Globale Variable (Klassenvariable)
    private static int globalStaticCounter = 0;
 
    public void demonstrateLocalVariable() {
        // Lokale Variable
        int localCounter = 0;
 
        for (int i = 0; i < 5; i++) {
            localCounter++;
            globalCounter++;
            globalStaticCounter++;
            System.out.println("Local Counter: " + localCounter);
            System.out.println("Global Counter: " + globalCounter);
            System.out.println("Global Static Counter: " + globalStaticCounter);
        }
    }
 
    public static void main(String[] args) {
        VariableExample example = new VariableExample();
        example.demonstrateLocalVariable();
 
        // Zugriff auf die Klassenvariable ohne Instanz
        for (int i = 0; i < 5; i++) {
            globalStaticCounter++;
            System.out.println("Global Static Counter in main: " + globalStaticCounter);
        }
    }
}

Erklärung

  • Lokale Variable localCounter wird innerhalb der Methode demonstrateLocalVariable deklariert und ist nur dort sichtbar.
  • Instanzvariable globalCounter ist innerhalb der gesamten Klasse sichtbar und wird bei jeder Instanz der Klasse VariableExample separat gehalten.
  • Klassenvariable globalStaticCounter ist ebenfalls innerhalb der gesamten Klasse sichtbar, aber es gibt nur eine Kopie dieser Variable, die von allen Instanzen der Klasse geteilt wird.

Hoffe, das hilft dir weiter! Hast du noch weitere Fragen zu Java?