Datentypen
Die Zahl der Datentypen in Java sind ziemlich überschaubar. Auffällig ist, dass wir jeden Datentyp zweimal finden: Einmal als „Primitiven Typ“, also z.B. als einfache Zahl, und ein weiteres Mal als „Wrapper-Klasse“, also als Object. Eine Wrapper-Klasse ist zum Beispiel java.lang.Integer für int, und new Integer(1) wäre die Objekt-repräsentation der Zahl 1.
Der Hintergrund ist, dass es den Entwicklern von Java wohl etwas umständlich erschien, arithmetische Operationen stets auf Klassenbasis durchzuführen; andererseits wollte man aufgrund des objektorientierten Konzepts der Sprache auch nicht auf die Klassen verzichten, und so haben wir heute beides.
Die folgende Tabelle gibt Ihnen einen Überblick über die Datentypen in Java. Die Auswahl des passenden Datentypes hat sich – entwickelt man für moderne Desktop oder Servermaschinen – doch ziemlich entkrampft. So wird man im Normalfall integer (int) und double verwenden, ohne sich über den Speicherverbrauch weitergehend Gedanken zu machen.
| Primitiver Datentyp | Wrapper-Klasse (java.lang.*) | Länge (Bytes) | Wertebereich |
| boolean | Boolean | 1 | true, false |
| byte | Byte | 1 | 0x00 – 0xFF |
| char | Character | 2 | \u0000 - \uFFFF |
| short | Short | 2 | -2**15 – 2**15-1 |
| int | Integer | 4 | -2**31 – 2**31-1 |
| long | Long | 8 | -2**63 – 2**63-1 |
| float | Float | 4 | +/-3.40282347 * 10**38 |
| double | Double | 8 | +/-1.79769313486231570 * 10**308 |
Um einen primitiven Datentyp zu definieren genügt eine einfache Zuweisung:
int i = 1;
Eine Wrapper-Klasse dagegen wird wie andere Klassen auch durch den Konstruktor erzeugt:
Integer integerObject = new Integer(1);
Um einen primitiven Typen aus einem Wrapper Objekt zu erhalten verwenden Sie eine der Methoden des entsprechenden Wrapper-Klasse:
int i = new Integer(1).intValue();
Einzelheiten zu den Wrapper-Klassen im Kapitel über die Wrapper- Klassen.
Schauen wir uns die einzelnen Datentypen näher an:
Boolean ist ein Wahrheitswert, der die Werte true und false annehmen kann. True und false sind Schlüsselwörter in Java, sodass sie abfragen können:
boolean val=true;
if (val==true) { .. // do things..
Boolsche Werte können nicht auf 1 oder 0 abgefragt werden.
An ganzzahligen Datentypen kennt Java byte (1 byte), short (2 byte), integer (int, 4 byte) und long (8 byte). Sie sind stets vorzeichenbehaftet und habe auf allen Plattformen eine feste Breite.
Ganzzahlige Datentypen können auch im Hexadezimal- und im Oktalformat dargestellt werden. Das folgende kleine Programm zeigt die Verwendung:
An Fliesskommazahlen kennt Java double (8 byte) und float (4 byte).
Beachten Sie die Initialisierung float f3=12.0f; um explizit einen Float-Wert zu definieren. (ebenso bei long mit „l“ für long s.o. möglich.)
Character (char) meint ein einzelnes Zeichen und verwendet im Gegensatz zu vielen anderen Programmiersprachen zwei Byte. Alle Zeichen sind somit in 16 Bit Unicode definiert. Um sicherzugehen, dass unser „ö“ auf allen Betriebssystemen und Spracheinstellungen auch als „ö“ erscheint, sollte stets die Unicode Notation verwendet werden, d.i. \u gefolgt vom Zahlenwert des Zeichens „\u00F6“. Die Unicode – Notation lässt sich auch in Zeichenketten verwenden. Informationen zu Unicode bei www.unicode.org, eine gute Einführung bietet selfhtml. Erwähnenswert ist auch die Demo zu den Zeichensätzen im JDK unter $JAVA_HOME/demo/jfc/Font2Dtest/Font2Dtest.jar. Um Dateien und Quellcode in die Unicode Notation umzuwandeln gibt es das Tool „Native2Ascii“.