Java Datentypen
In diesem Artikel erklären wir dir, welche primitive Datentypen es in Java gibt und welche Eigenschaften sie besitzen. Zusätzlich findest du am Ende des Artikels eine Tabelle, in welcher alle Java Datentypen mit ihrem zugehörigen Wertebereich in übersichtlicher Form dargestellt sind.
Du möchtest die acht primitive Datentypen von Java schnell verstehen? Dann schau dir unbedingt unser Video dazu an!
Inhaltsübersicht
Java Datentypen – Was ist ein Datentyp?
Grundsätzlich gibt es acht primitive Datentypen, alle anderen Datentypen werden Objekte genannt. Ein Objekt ist ein größerer Block an Daten, der aus vielen internen Teilen besteht und bei dem Klassen mit einbezogen werden. Fürs erste betrachten wir aber nur die acht primitive Datentypen.
Aber was ist überhaupt ein Java Datentyp? Um Java Datentypen zu verstehen, musst du wissen, dass ein Computerspeicher beliebig viele Bitmuster enthält. Bitmuster stellen die Informationen, die ein Computer trägt, mithilfe verschiedener Kombinationen der Zahlen null und eins dar. Ein Datentyp ist ein Schema für die Verwendung von Bit, um Werte darzustellen. Dabei müssen diese Werte nicht aus Zahlen bestehen, sondern können jede Art von Daten, die ein Computer verarbeiten kann, enthalten.
Primitive Datentypen Java
Die acht primitive Datentypen haben folgende Namen: byte
, short
, int
(integer), long
, float
, double
, char
(character) und boolean
. Jeder dieser Typen besitzt eine festgelegte Anzahl an Bit. Zusätzlich lassen sie sich in Gruppen unterteilen. Zahlen sind in Java so wichtig, dass sechs der acht Java Datentypen numerisch sind. Das bedeutet, dass jeder von diesen, bis auf den char
und den boolean
, Zahlenwerte speichert.
Numerische Java Datentypen lassen sich in ganzzahlige Typen und Gleitpunkttypen unterteilen. byte
, short
, int
und long
bilden somit die ganzzahligen Typen und float
und double
die Gleitpunkttypen.
Nun kann man sich aber fragen, warum es für numerische Werte mehrere Java Datentypen gibt. Bei der effizienten Programmierung ist es ausschlaggebend, wie viel Speicher das Programm in Anspruch nimmt.
Java long und Java byte
Das bedeutet, wenn man zum Beispiel einem numerischen Datentyp eine kleine Zahl zuweisen möchte, dann wäre es reine Speicherverschwendung dafür den long
Datentyp zu verwenden. Denn der long
Datentyp besitzt eine Größe von 64 Bit! Das heißt, er kann ganze Zahlen im Bereich von -263 bis 263-1 darstellen.
Warum sollte man also einen so großen Datentypen verwenden, wenn für eine kleine Zahl, zum Beispiel 112, der Typ byte
vollkommen ausreichen würde? Der byte
hat eine Größe von 8 Bit und besitzt einen Wertebereich von -128 bis +127. Deshalb ist es wichtig zu wissen welchen Typ man verwenden sollte, um möglichst viel Speicher zu sparen.
Bei kleinen Programmen macht das kaum einen Unterschied. Solltest du aber mal an einem größeren Projekt arbeiten, ist es sehr wichtig, wie du mit diesen Datentypen umgehst. Der geläufigste ganzzahlige primitive Datentyp ist dabei der int
, da er einen angemessenen Wertebereich mit 32 Bit besitzt.
Die primitive Datentypen haben unterschiedliche Aufgaben. So kann man, wenn man zum Beispiel einem Datentyp eine Kommazahl zuweisen möchte, keinen long
oder byte
verwenden.
Java double und Java float
Diese Aufgabe wird von dem Typ float
und double
übernommen, wobei in Programmen Gleitpunktliterale einen Dezimalpunkt und keine Kommata haben. Da beide die gleiche Aufgabe haben, ist es natürlich klar, dass beide unterschiedliche Größen besitzen.
Somit ist double
mit 64 Bit doppelt so groß wie float
mit 32 Bit und besitzt daher einen viel größeren Wertebereich. So wird float
oftmals als ein Gleitpunkttyp mit „einfacher Genauigkeit“ bezeichnet, während double
Gleitpunkttyp mit „doppelter Genauigkeit“ genannt wird. In Java ist es gängig fast immer den Gleitpunkttyp double
für Kommazahlen zu verwenden und float
nur bei besonderen Umständen, zum Beispiel wenn man eine Datei mit 32 Bit float-Daten verarbeiten möchte. Versucht man diese Gleitpunkttypen zu vermischen, kann es zu Datenverlust führen.
Wenn du explizit ein Float-Literal, also eine Zeichenfolge die einen Float-Wert darstellt, anfordern möchtest, musst du am Ende der Kommazahl ein großes oder kleines „f“ schreiben. Das gleiche gilt auch für ein Double-Literal, indem du ein großes oder kleines „d“ am Ende setzt.
Java char und Java boolean
Es bleiben nur noch zwei Java Datentypen übrig. Zum einen der Java Datentyp char
, welcher Zeichendaten speichert und der Java Datentyp boolean
. In den meisten Programmiersprachen verwendet der Datentyp char
nur 8 Bit, in Java werden jedoch 16 Bit benutzt, damit auch Schriftzeichen anderer Sprachen als Schriftzeichen aus dem Englischen dargestellt werden können. Eine char
Variable kann allerdings nur ein einzelnes Zeichen repräsentieren. Um mehrere Zeichen aneinandergereiht speichern zu können, musst du Objekte verwenden, die aus char-Daten konstruiert werden. Ein Beispiel dazu wären Strings, die aus einem oder mehreren char-Daten bestehen. Zeichenliterale des Java Datentyps char
werden immer von einem einfachen Hochkomma eingeschlossen. Zeichen oder Zeichenketten, die von doppelten Anführungszeichen eingeschlossen werden, sind Strings und kein primitiver Datentyp.
Der letzte primitive Datentyp ist der boolean
. Dieser Java Datentyp ist, der wahrscheinlich einfachste von allen und seine Aufgabe besteht darin, ein true
oder false
auszugeben. Du hast richtig gehört, ein Boole’scher Wert kann nur einen von zwei Werten haben: true
oder false
. Dieser Wert kann in einem einfachen boolean
gespeichert und für verschiedene Ausdrücke verwendet werden. Zum Beispiel, wenn man eine Methode in einem Programm besitzt, die überprüft ob die Sonne scheint oder nicht. Wenn die Sonne tatsächlich scheint, dann würde der Boole’sche Wert dieser Methode true
sein, ansonsten wäre er false
.
Tabelle Java Datentypen
In der folgenden Tabelle findest du alle Java Datentypen mit ihrem zugehörigem Wertebereich übersichtlich aufgelistet:
Java Datentyp | Größe | Wertebereich |
---|---|---|
boolean | 8 bit | true/false |
byte | 8 bit | -27 bis 27-1 |
short | 16 bit | -215 bis 215-1 |
char | 16 bit | 0 bis 65535 |
int | 32 bit | -231 bis 231-1 |
float | 32 bit | +/-1,4E-45 bis +/-3,4E+38 |
long | 64 bit | -263 bis 263-1 |
double | 64 bit | +/-4,9E-324 bis +/-1,7E+308 |