Advanced   Java   Services Konstanten (Literale) Back Next Up Home

Es gab eine Zeit, da sprach man einfach von Konstanten. Heute nennt man sowas Literal und man muß erklären, was ein Literal ist. Mughal etwa schreibt "a literal denotes a constant value". Also, ein Literal ist ein konstanter Wert. Und diese Werte haben einen bestimmten Datentyp. Mögliche Datentypen für Konstanten sind:

boolean   int   long   float   double   char   String

Hier einige Beispiele für Literale.

Datentyp Werte
boolean false true
int -17 33 2147483647 077 0x77
long 33L 2147483648 -17l 077L 0x77l
float 3.14F 33f -7e-1F -69e-2f
double 3.14 33D -17d 7e-1 69e+2
char 'a' 'Z' '_' '9' '\u0041'
String "aha" "a" "1.234" "1234" "you got it ?"

Der Tabelle kann man die Regeln für Literale entnehmen. Für den Datentyp boolean gibt es nur die zwei Literale true und false. true und false sind auch reservierte Worte.

Eine ganze Zahl ist vom Typ int, wenn sie im Wertebereich des Datentyps liegt. Außerhalb dieses Bereichs erhält sie vom Compiler den Typ long (2147483648 hat den Typ long, da 2147483647 die größte Ganzzahl ist, die mit dem Datentyp int dargestellt werden kann). Ganzzahlen im Bereich int kann man jedoch durch explizites Anhängen eines großen L oder eines kleinen l (schlecht lesbar!) als Longliteral kennzeichnen. short- oder byte-Literale gibt es nicht. Eine Fließkommazahl wird vom Compiler automatisch als double Literal aufgefaßt. float-Literale bekommt man nur durch explizites Anhängen von groß F oder klein f. Ganzzahlen kann man durch explizites Anhängen von groß F oder klein f bzw. groß D oder klein d als float- bzw. double-Literale kennzeichnen. Die wissenschaftliche Schreibweise für Kommazahlen etwa 0.7 = 7*10-1 wird 7e-1 geschrieben, wobei ebenso groß E statt klein e zulässig ist. Eine so dargestellte Zahl wird immer als double aufgefaßt, auch wenn sie ganzzahlig ist (7e+2 etwa ist also vom Typ double). Hängt man groß F oder klein f hinten an, dann akzeptiert sie der Compiler als float. Weitere Möglichkeiten gibt es auf dieser Ebene nicht, ein Anhängsel I existiert nicht und L ist in dieser Situaution nicht anwendbar. Die Umwandlung eines double-Literals etwa in ein int funktioniert nur mit dem cast-Operator.

String ist ein nichtprimitiver Datentyp, also eine Klasse. Nichtprimitive Datentypen können nicht in primitive Datentypen umgewandelt werden. Es gibt jedoch Methoden, die aus dem String "1234" eine Ganzzahl 1234 vom Typ int machen.

Oktalzahlen und Hexadezimalzahlen

Ein ganzzahliges Literal mit einer führenden 0 wird vom Compiler als Oktalzahl gelesen. So ist 077 eine Oktalzahl und ergibt dezimal 63. Ein Literal der Form 078 führt zu einer Fehlermeldung, weil im Oktalsystem nur die Ziffern 0 bis 7 verwendet werden dürfen.

Ein ganzzahliges Literal, das mit 0x beginnt wird vom Compiler als Hexadezimalzahl gelesen. So ist 0x77 eine Hexzahl und ergibt dezimal 119, ebenso 0xff (oder 0xFF) mit dem dezimalen Wert 255. Ein Literal der Form 0xGH führt zu einer Fehlermeldung, weil im Hexadezimalsystem nur die Ziffern 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f verwendet werden dürfen.

Valid XHTML 1.0 Strict top Back Next Up Home