Java Reference
In-Depth Information
In diesem Programm werden zwei boolesche Variablen mit dem Namen gefunden definiert, eine
global in Zeile 1 und eine lokal in Zeile 11. Letzteres ist erlaubt, obwohl die lokale Variable ja ei-
gentlich im Gültigkeitsbereich der gleichnamigen globale Variablen definiert wird. Was bedeutet das
aber für die Benutzung des Variablennamens gefunden in den Zeilen 4, 12 und 15? Ist hier die loka-
le oder die globale Variable gemeint? Es gilt: Wird eine lokale Variable im Gültigkeitsbereich einer
gleichnamigen globalen Variablen definiert, dann „überdeckt“ der Gültigkeitsbereich der lokalen
Variablen den Gültigkeitsbereich der globalen Variablen, d.h. tritt im Gültigkeitsbereich der loka-
len Variablen der zweifach vergebene Name auf, dann ist damit die lokale Variable gemeint. Es ist
nicht möglich, im Gültigkeitsbereich der lokalen Variablen auf eine globale Variable mit demselben
Namen zuzugreifen.
Für das obige Beispiel bedeutet das: In den Zeilen 12 und 15 wird auf die lokale Variable gefunden
zugegriffen, während Zeile 4 auf die globale Variable gefunden zugreift. Da nirgendwo im Pro-
gramm der Wert der globalen Variablen gefunden verändert wird, produziert die main-Prozedur
eine Endlosschleife. Unterlassen Sie möglichst eine Gleichbenennung von globalen und lokalen Va-
riablen, um solche Fehler zu vermeiden.
Die Benutzung globaler Variablen gilt in der imperativen Programmierung als „unsauber“, da die
Gefahr, dass sich dadurch Fehler in ein Programm einschleichen, steigt. Programme sind übersicht-
licher, wenn Prozeduren bzw. boolesche Funktionen nur auf solche Variablen zugreifen, die lokal in
der Prozedur bzw. Funktion definiert sind („Lokalitätsprinzip“). Wir werden in Kapitel 16 das Kon-
zept der Parameter kennenlernen, durch das die Nutzung globaler Parameter weitgehend vermieden
werden kann.
13.6 Lebensdauer einer booleschen Variable
Während der Gültigkeitsbereich einer booleschen Variablen zur Compilierzeit von Bedeutung ist, ist
die Lebensdauer einer booleschen Variablen eine Größe, die zur Laufzeit Relevanz besitzt. Sie ist
definiert als die Zeitspanne, während der im Hauptspeicher Speicherplatz für eine Variable reserviert
ist. Für boolesche Variablen gilt dabei: Die Lebensdauer einer globalen Variablen umfasst die ge-
samte Ausführungszeit eines Hamster-Programms. Die Lebensdauer einer lokalen Variablen beginnt
bei ihrer Definition und endet nach der vollständigen Abarbeitung des Blocks, in dem sie definiert
wurde.
Das heißt, wird zwischen der Definition einer lokalen Variablen und dem Ende des Blocks eine
Prozedur oder Funktion aufgerufen, so ist die Variable auch während der Ausführung der Funktion
„lebendig“, aber da die Variable in der Prozedur bzw. Funktion nicht gültig ist, ist sie dort nicht
zugreifbar.
Schauen Sie sich dazu das folgende Programm an:
1 void main() {
2
boolean gefunden = false;
while (!gefunden) {
3
gefunden = suche();
4
linksUm();
5
}
6
Search WWH ::




Custom Search