Java Reference
In-Depth Information
(F6)
so weit aus, bis die Variable
zahl
den Wert 127 erreicht hat. Beim nächsten Durch-
lauf müsste die Variable den Wert 128 erreichen. Führen Sie das Programm weiter aus,
so werden Sie feststellen, dass nicht der Wert 128, sondern -128 als nächster Wert ange-
zeigt wird (
Abbildung 4.37
).
Abbildung 4.37
Variable-Ansicht mit Zahlenüberlauf der Variablen »zahl«
Da die Variable
zahl
nie den Wert 128 erreicht, wird die
while
-Schleife auch nie verlassen
und der darunter platzierte Ausgabebefehl mit
System.out.println
wird nie ausgeführt.
Wie kann dieser Effekt, dass die Variable
zahl
beim Addieren von 1 vom Wert 127 zum
Wert -128 springt, erklärt werden? Die Variable
zahl
ist vom primitiven Datentyp
byte
.
In
Tabelle 2.2
ist als Wertebereich -128 bis 127 angegeben. Erhöht man den Wert einer
ganzzahligen Variablen, die den größten Wert ihres Wertebereichs erreicht hat um 1, so
nimmt die Variable den kleinsten Wert des Wertebereichs an. Dieser Effekt wird auch als
Zahlenüberlauf bezeichnet. Sie sollten also immer genau prüfen, ob der Wertebereich
eines Datentyps für die betreffende Anwendung ausreicht. Ist das nicht der Fall, kann
das leicht zu unerwarteten Effekten führen.
Verlassen Sie nun die Debug-Perspektive, und kehren Sie mit der Java-Schaltfläche in
der rechten oberen Ecke des Eclipse-Fensters zur Java-Perspektive zurück. Um den Feh-
ler zu beheben, ändern Sie den Datentyp der Variablen
zahl
von
byte
in
int
, und das
Programm wird, wie erwartet, mit der Ausgabe der Variablen
zeichensatz
beendet. In
dieser Variablen sind die Zeichen mit den Zeichencodes zwischen 30 und 128 hinterein-
ander abgelegt.
Dieser kleine Ausflug in die Debug-Perspektive sollte Ihnen neben typischen Program-
mierfehlern auch ein hervorragendes Instrument zur schrittweisen Verfolgung von
Programmabläufen näherbringen. Es rechtfertigt seinen Einsatz nicht nur, wenn Pro-
grammfehler aufzuspüren sind, sondern auch, wenn Sie sich über eine Programmlogik
nicht ganz im Klaren sind und diese nachvollziehen möchten.