Ist der Gültigkeitsbereich einer lokalen Variable immer der gesamte Körper einer Methode?
Nein — nur ab der Stelle, an der die Variable deklariert wurde bis zum Ende des Methodenkörpers. Manchmal wird eine lokale Variable mitten im Körper deklariert, nahe der Anweisung, die sie das erste Mal verwendet.
Es ist ein Fehler den gleichen Bezeichner zweimal in demselben Gültigkeitsbereich zu verwenden. Zum Beispiel ist das Folgende ein Fehler:
class Konto { . . . . private int kontostand; void verarbeiteAuszahlung( int betrag ) { int gebuehr, betrag; inkrementZaehler(); if ( kontostand < 100000 ) gebuehr = 15; else gebuehr = 0; kontostand = kontostand - betrag - gebuehr; } }
Der Gültigkeitsbereich des formalen Parameters (betrag
) überschneidet sich mit dem Gültigkeitsbereich der lokalen Variablen ( ebenfalls betrag
genannt).
Das ist ein Fehler.
Hier ist die Situation anders als beim vorherigen Beispiel,
in dem zwei separate formale Parameter beide betrag
genannt wurden.
In jener Situation hat sich der Gültigkeitsbereich nicht überschnitten und es gab keine Überschneidung.
Kann der gleiche Bezeichner als Name für eine lokale Variable in zwei verschiedenen Methoden verwendet werden?