In Programmen braucht man eine Möglichkeit, um Werte zu speichern, beispielsweise Zwischenergebnisse von Berechnungen. Dies geschieht mit Hilfe von Variablen. Genau wie in der Mathematik ist eine Variable ein Platzhalter für einen Wert.
Der Begriff Platzhalter ist hier wörtlich zu nehmen. Bei der Deklaration einer Variablen stellt der Computer nämlich für den Wert einen Platz im Speicher bereit. Damit der Computer weiß, wie der Inhalt des Speicherplatzes zu interpretieren ist, wird bei der Deklaration der Typ des Wertes festgelegt.
Ein Typ ist ein Wertebereich, d.h. eine Menge von möglichen Werten. Ein Beispiel ist der Typ int (engl.: integer – ganzzahlig). Die möglichen Werte des Typs int sind die ganzen Zahlen im Bereich -2147483648, ..., 2147483647.
Verbunden mit einem Typ sind die zulässigen Operationen, die auf Werte dieses Typs anwendbar sind, z.B. eine Addition beim Typ int.1)
Beispiel: Mit folgender Anweisung werden zwei Variablen a und b deklariert, die zur Aufnahme von Werten vom Typ int vorgesehen sind.
Eine Variable, die zur Aufnahme eines Wertes vom Typ int vorgesehen ist, wird kurz als int-Variable oder als Variable vom Typ int bezeichnet.
Bei einer Wertzuweisung wird eine Variable mit einem tatsächlichen Wert belegt.
Beispiel: Mit folgenden Anweisungen werden zunächst zwei Variablen a und b vom Typ int deklariert. Dann wird der Variablen a der Wert 17 zugewiesen. Anschließend wird der Variablen b der Wert 21 zugewiesen.
Der Computer führt eine Wertzuweisung durch, indem er zunächst den Ausdruck auswertet, der auf der rechten Seite des Wertzuweisungszeichens "=" steht. Den ermittelten Wert weist er der Variablen zu, die auf der linken Seite des Wertzuweisungszeichens steht.
In der zweiten Wertzuweisung dieses Beispiels wertet der Computer also den Ausdruck a + 4 aus. Er sieht dazu im Speicher nach, welchen Wert a hat (17), und addiert 4 zu diesem Wert. Das Ergebnis 21 weist er der Variablen b zu. Die Variable b hat anschließend den Wert 21.
Die Deklaration einer Variablen und die Zuweisung eines Anfangswertes können auch zusammen durchgeführt werden.
Beispiel: Die Anweisungen aus dem vorigen Beispiel lassen sich auch so schreiben:
Auf der linken Seite des Wertzuweisungszeichens muss immer eine Variable stehen. Auf der rechten Seite muss immer ein Ausdruck stehen. Ein Ausdruck ist ein Term, der vom Computer ausgewertet wird und einen Wert eines bestimmten Typs ergibt. Mögliche Wertetypen in Java sind u.a. Zahlen (Typ int oder double), Zeichenreihen (Typ String) und Wahrheitswerte (Typ boolean – benannt nach G. Boole).
Der einfachste Ausdruck ist die direkte Angabe eines Wertes, also einer Zahl, einer Zeichenreihe oder eines Wahrheitswertes.
Beispiel: In folgendem Programmstück werden den Variablen x, s, und w jeweils der Zahlenwert 2, die Zeichenreihe "Hallo" und der Wahrheitswert true zugewiesen.
Der zweiteinfachste Ausdruck ist eine einzelne Variable. Der Computer wertet einen solchen Ausdruck aus, indem er den Wert der Variablen aus dem Speicher liest.
Beispiel: Der Variablen y wird der Wert von x zugewiesen, also der Wert 2:
Kompliziertere Ausdrücke entstehen, indem Werte und Variablen mit Rechenzeichen verknüpft sowie möglicherweise mit Klammern versehen werden.
Beispiel: In folgendem Programm treten drei Ausdrücke auf, die jeweils eine Zahl, eine Zeichenreihe und einen Wahrheitswert ergeben.
Die Variable y erhält den Wert 21, die Variable s erhält als Wert die Zeichenreihe "U2" und die Variable w erhält den Wahrheitswert true.
Bei der Auswertung von numerischen Ausdrücken gelten die gewohnten Rechenregeln der Arithmetik – Klammern werden zuerst ausgewertet, Punktrechnung geht vor Strichrechnung, ansonsten wird von links nach rechts ausgewertet.
Das Zeichen + dient außer zur Addition von Zahlen auch zur Verkettung von Zeichenreihen. Wird eine Zahl und eine Zeichenreihe mit + verknüpft, so wird die Zahl in eine Zeichenreihe umgewandelt und mit der Zeichenreihe verkettet.
Der Ausdruck x>0 ergibt einen Wahrheitswert, also entweder true (wahr) oder false (falsch), je nach dem, ob die Bedingung x>0 erfüllt oder nicht erfüllt ist.
Schließlich ist auch noch der Aufruf einer Funktion, die einen Wert zurückgibt, ein Ausdruck.
Beispiel: Der Variablen b wird das Maximum von a und -a zugewiesen:
Vorausgesetzt ist, dass die Funktion max definiert ist und dass vorher der Variablen a ein Wert zugewiesen worden ist.
Bei einer Wertzuweisung muss der Typ des Wertes mit dem Typ der Variablen übereinstimmen. Ausnahmen gibt es im Bereich der numerischen Typen. So ist es etwa möglich, einer Variablen vom Typ double (Kommazahl) einen Wert vom Typ int (Ganzzahl) zuzuweisen. Dabei wird die Ganzzahl automatisch in eine Kommazahl umgewandelt. Beispielsweise wird eine 3 in 3.0 umgewandelt.
In umgekehrter Richtung ist eine automatische Typanpassung nicht vorgesehen. Einer Variablen vom Typ int kann kein Wert vom Typ double zugewiesen werden, es sei denn, der double-Wert wird vorher explizit umgewandelt. Die explizite Typumwandlung wird als Casting bezeichnet (engl.: to cast – gießen). Dabei wird der Wert sozusagen in eine neue Form gegossen.
Beispiel: Durch die Anweisung a = (int) x; wird der double-Wert 3.85 so zurechtgestutzt, dass er von einer int-Variablen aufgenommen werden kann. Hierbei werden die Nachkommastellen einfach abgeschnitten. Somit erhält die Variable a den Wert 3.
Der gewünschte neue Typ wird in Klammern vor den Ausdruck gesetzt, der umgewandelt werden soll; die Typumwandlung bezieht sich nur auf den unmittelbar folgenden Teilausdruck (Priorität wie ein Vorzeichen). Soll hiervon abgewichen werden, müssen zusätzliche Klammern gesetzt werden:
1) Achtung: Die Addition beim Typ int ist eine Addition modulo 232, d.h. es kommt zu unerwarteten Ergebnissen, wenn der Wertebereich überschritten wird.
Weiter mit: [Bedingte Anweisungen] [Literatur] oder [up]