Klicken Sie Zeilen an, die mit + markiert sind. Dort ist Hilfeinformation hinterlegt.
Eine weitere Variable mit Name i ist auf Klassenebene nicht erlaubt. Klassenvariablen und Instanzvariablen einer Klasse haben denselben Scope. Nur ihre Lebensdauer ist verschieden.
i ist hier die globale Variable. Sie muss vor dem statischen Initialisierungsblock definiert sein.
Hier ist i die Kurzschreibweise für Scopes.i, weil die lokale Variable i erst danach definiert wird.
Die lokale Variable darf hier i heißen, weil die Klassenvariable über ihren vollen Namen Scopes.i zugreifbar bleibt.
Die Laufvariable darf nicht i heißen, weil sie dann die Variable i aus Zeile 23 verdecken würde. Das Verdecken von Variablen aus einem umgebenden Scope gilt als Fehlerquelle, weil man als Programmierer die beiden Variablen unbemerkt verwechseln kann.
Hier ist die Kurzschreibweise i für Scopes.i möglich, weil eindeutig. Anders als beim statischen Initialisierungsblock spielt es keine Rolle, ob die globale Variable vor oder nach der Methode definiert ist.