02 Java – Datentypen
Datentypen sind Schemen für die Verwendung von Bits. Mit ihnen lassen sich Werte, abhängig von der Größe der jeweiligen Datentypen, darstellen. Z.B. ist eine Ganzzahl ein anderer Datentyp als eine Fließkommazahl.
Grundsätzlich wird zwischen 2 Arten von Datentypen unterschieden.
Primitive Datentypen
Primitive Datentypen werden auch einfache oder elementare Datentypen genannt. In Java existieren nur 8 solcher Datentypen. Die folgende Tabelle zeigt eine Übersicht aller primitiven Datentypen.
Datentyp | Kategorie | Wrapper-Klasse | Größe in Bit | Wertebereich | Beschreibung |
---|---|---|---|---|---|
| Ganzzahlig |
| 8 | -128 bis +127 | Zweierkomplement-Werte |
| Ganzzahlig |
| 16 | -32.768 bis +32.767 | Zweierkomplement-Werte |
| Ganzzahlig |
| 32 | -2.147.483.648 bis +2.147.483.647 | Zweierkomplement-Werte |
| Ganzzahlig |
| 64 | -9.223.372.036.854.775.808 bis +9.223.372.036.854.775.807 | Zweierkomplement-Werte |
| Fließkommazahl |
| 32 | -3,40282347 * 1038 bis +3,40282347 * 1038 (8 Nachkommastellen) | 32-Bit IEEE 754-Fließkommazahl |
| Fließkommazahl |
| 64 | -1,79769313486231570 * 10308 bis +1,79769313486231570 * 10308 (17 Nachkommastellen) | 64-Bit IEEE 754-Fließkommazahl mit doppelter Genauigkeit |
| Zeichen-Datentyp |
| 16 | 0 bis +65.535 | Unicode-Zeichen (UTF-16) |
| Boolescher Datentyp |
| Abhängig von der JVM. Aufgrund der Speicherarchitekturen wird 8 Bit allokiert, auch wenn ein Boolean praktisch nur 1 Bit repräsentiert. |
| Boolescher Wahrheitswert |
Ganzzahlen
Der Compiler interpretiert solche Literale standardmäßig als Integer-Ganzzahlen. Damit der Compiler erkennt, dass es sich um einen Datenwert vom Typ long
handelt, muss dies mit einem L
am Ende gekennzeichnet werden.
Neben der standardmäßigen Dezimalschreibweise, kann auch die binäre, oktale oder hexadezimale Schreibweise verwendet werden.
Zahlensystem | Präfix |
---|---|
Binär |
|
Oktal |
|
Hexadezimal |
|
Folgendes Beispiel zur Veranschaulichung. Die Syntax wird im nachfolgenden Kapitel 3 – Variablen genauer erklärt.
Gleitkommazahlen
Um Gleitkommazahlen darstellen zu können, wurden die Datentypen float
und double
eingeführt. Soll der Restwert berechnet werden, wird dafür der Operator %
verwendet. Das folgende Beispiel zeigt 4 Varianten für die Kennzeichnung einer Kommazahl.
Was wird bei folgendem Beispiel auf der Konsole ausgegeben?
Regulär würde man im Kopf auf das Ergebnis 0.1
kommen. Da in Java jedoch standardmäßig mit Ganzzahlen gearbeitet wird, wird alles, was nach dem Komma steht abgeschnitten. Das Ergebnis ist also 0
.
Was ergibt 0.1 + 0.2
?
Gleitkommazahlen können auch die wissenschaftliche Notation repräsentieren. Diese kann direkt angewendet werden.
Datentyp char
Der Datentyp char
ist für die Darstellung eines einzelnen Zeichens verantwortlich. char
steht als Abkürzung für character
. Intern werden die Zeichen als Unicode (16-Bit-Dualzahl) dargestellt. Mit anderen Worten: Jedes Zeichen repräsentiert intern eine Ganzzahl. Daher kann ein char
auch als int
gespeichert werden.
Escape Sequenzen
Der Compiler interpretiert einige Zeichen als Escape-Sequenzen. Eine Escape-Sequenz ist eine spezielle Zeichenfolge, die durch ein Escape-Zeichen eingeleitet wird und dazu dient, spezielle oder nicht druckbare Zeichen darzustellen.
Folgende Tabelle zeigt einige Escape-Sequenzen.
Escape Sequenz | Beschreibung |
---|---|
| Horizontaler Tabulator |
| Carriage Return (Wagenrücklauf) |
| Zeilenumbruch |
| Unicode XXXX (hexadezimal) |
| Backspace (Rückschritt) |
| Form Feed (Seitenumbruch) |
| Hochkommata |
| Anführungszeichen |
| Backslash |
Datentyp boolean
Vergleiche werden mit dem Typ boolean
realisiert. Beispielsweise um zu prüfen, ob eine Zahl größer ist, als eine andere. Die einzigen Literale die ein boolean
annehmen kann, sind true
(wahr) oder false
(falsch).
Referenzdatentypen
Referenzdatentypen werden im Verlauf der späteren Kapitel genauer beschrieben. Referenztypen werden häufig auch als Instanzen oder Objekte, seltener auch als komplexe Datentypen bezeichnet. Objekte repräsentieren konkrete Exemplare von Bauplänen (Klassen). Zur Vereinfachung wird in den folgenden Kapiteln der Begriff „Objekt“ oder „Instanz“ verwendet.
Ein Objekt kann im Grunde alles sein, was einem in den Sinn kommt. Beispielsweise ein Ball, ein Mensch, eine Aktivität oder sogar eine Dimension. Solche Objekte werden durch Eigenschaften und Funktionalitäten beschrieben.
Objektmethoden stellen dabei die Funktionen eines Objekts dar. Ein Mensch kann z.B. gehen (vgl. Kapitel 9 – Methoden & Kapitel 10 – Klassen: Objektmethoden).
Objektvariablen speichern zu jedem Objekt spezifische Eigenschaften. Ein Mensch hat z.B. ein Alter und einen Namen (vgl. Kapitel 3 – Variablen & Kapitel 10 – Klassen: Objektvariablen).
Auf Objekte wird in Kapitel 11 – Objekte & Kapitel 14 – OOP genauer eingegangen.
Auf zwei bestimmte Objekte wird bereits früher in Kapitel 5 – Zeichenketten und Kapitel 8 – Arrays eingegangen.