Ist der Gültigkeitsbereich einer lokalen Variable immer der gesamte Körper einer Methode?
Nein—nur von da an, wo 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 KontoChecker
{
. . . .
private int kontoStand;
void verarbeiteAuszahlung( int betrag )
{
int betrag;
inkrementZaehler();
if ( kontoStand < 100000 )
gebuehr = 15;
else
gebuehr = 0;
kontoStand = kontoStand - betrag - betrag ;
}
}
Der Gültigkeitsbereich des formalen Parameters (betrag) überschneidet den Gültigkeitsbereich der lokalen Variablen ( ebenfalls betrag genannt).
Das ist ein Fehler.
Dies ist eine andere Situation, als in dem vorherigen Beispiel,
wo zwei separate formale Parameter beide betrag genannt wurden.
In jener Situation hat sich der Gültigkeitsbereichs nicht überschnitten und es gab kein Durcheinander.