Java Tutorial #3 – Primitive Java Datentypen

Im dritten Artikel unserer Java Tutorialreihe werden wir uns detailliert die Java Datentypen ansehen. Genauer gesagt wirst Du in diesem Artikel die sogenannten primitiven Datentypen kennenlernen, von welchen insgesamt acht Stück existieren.

Dieser Artikel stellt die ideale Fortsetzung zum zweiten Teil unserer Java Tutorialreihe dar, da das Konzept der Datentypen sehr eng mit den zuvor bereits ausführlich besprochenen Variablen in Zusammenhang steht. Lass uns also keine Zeit verlieren und direkt starten 🙂

YouTube

Mit dem Laden des Videos akzeptieren Sie die Datenschutzerklärung von YouTube.
Mehr erfahren

Video laden

Inhaltsverzeichnis

1. Warum benötigt man in Java Datentypen?

In diesem Artikel möchte ich mit einer grundlegenden Frage beginnen, die da lautet:

Warum benötigen wir in Java überhaupt Datentypen?

Im letzten Blogartikel haben wir ja bereits gelernt, dass wir diese auf jeden Fall in Zusammenhang mit dem Konzept der Variablen benötigen. Bei der Deklaration bzw. Initialisierung von einer Variablen, mussten wir nämlich immer einen entsprechenden Datentyp mit angeben.

Doch daraus resultiert nun die Frage:

Wieso müssen wir dem Computer überhaupt mitteilen, welchen Datentyp die entsprechenden Variablen haben?

Diese Frage ist schnell beantwortet. Und zwar müssen wir den Computer über den gewünschten Datentyp in Kenntnis setzen, damit dieser mithilfe dieser Information intern vernünftig arbeiten kann. Dies ist deshalb notwendig, da der Computer intern, je nach Art des Wertes, unterschiedlich vorgeht.

Er macht beispielsweise einen ganz klaren Unterschied zwischen Ganzzahlen und Kommazahlen. Für uns Menschen sind beide Arten ganz grob gesagt einfach nur Zahlen. Für den Computer macht es je nach Art allerdings einen entscheidenden Unterschied, da intern ganz anders mit Ganzzahlen gearbeitet wird, als beispielsweise mit Kommazahlen.

Als Beispiel kann man hierfür die Multiplikation von zwei Zahlen heranziehen. Intern wird für Ganzzahlen hierbei ein ganz anderes Rechenverfahren verwendet, als für Kommazahlen. Dies liegt daran, dass Kommazahlen wesentlich aufwendiger berechnet werden müssen, und hierfür folglich wesentlich komplexere Rechenverfahren zum Einsatz kommen. Damit der Computer nun immer genau weiß, welches Verfahren er wann anwenden muss, zieht er sich eben die entsprechenden Informationen aus den Java Datentypen. Diese geben ihm nämlich eine genaue Auskunft darüber, mit was für Werten er es im entsprechenden Moment im Detail zu tun hat.

So viel mal zum Hintergrund, warum das Konzept der Java Datentypen überhaupt existiert.

2. Übersicht über die Primitiven Java Datentypen

In diesem Abschnitt möchten wir uns nun mal einen Überblick über die acht unterschiedlichen Java Datentypen verschaffen, welche auch als primitive Datentypen bezeichnet werden.

2.1. Primitive Datentypen - Tabelle

Hierzu habe ich im Folgenden eine Tabelle für Dich vorbereitet, in welcher alle acht primitiven Datentypen übersichtlich aufgelistet sind:

java datentypen übersicht

Wie Du aus der Tabelle entnehmen kannst, hat jeder der genannten Datentypen eine gewisse Größe und einen gewissen Wertebereich.

Die Größe gibt Auskunft darüber, wie viel Bit-Speicherplatz der Datentyp verwendet. Das bedeutet ganz einfach gesprochen: Desto mehr Bit bei der Größe angegeben sind, desto größer können auch die Werte sein, die darin abgespeichert werden.

Und abhängig von der Größe ergibt sich dann der zugehörige Wertebereich, welcher in dieser Tabelle in der letzten Spalte angegeben ist. Dieser Wertebereich zeigt exakt, welche spezifischen Werte von den einzelnen Datentypen aufgenommen werden können.

2.2. Details zu den einzelnen Datentypen

Diese Tabelle möchte ich mit Dir nun einmal Schritt für Schritt durchgehen.

Datentyp boolean

Beginnen möchte ich mit der ersten Zeile, in welcher sich der Datentyp „boolean“ befindet. Bei diesem steht unter Größe „undefiniert“, was daran liegt, dass es sich bei diesem Datentyp um einen ganz besonderen Vertreter handelt. Dieser kann nämlich nur die Werte „true“ oder „false“ annehmen. Im Moment kannst Du wahrscheinlich noch nicht sehr viel damit anfangen, aber sobald wir in dieser Tutorialreihe fortschreiten (beispielsweise wenn wir auf If-Statements zu sprechen kommen), wirst Du verstehen, wieso dieser spezielle Datentyp sehr nützlich ist.

datentyp char

Als nächstes folgt der Datentyp „char“. Die Abkürzung „char“ steht ausgeschrieben für „Character“. Dieser Datentyp besitzt eine Größe von 16 Bit und umfasst einen Wertebereich von 0 bis +65.535.

datentyp byte

Daraufhin folgt der Datentyp „byte“. Dieser hat eine Größe von 8 Bit und erstreckt sich über einen Wertebereich von -128 bis +127.

datentyp short

In Zeile 4 folgt dann der Datentyp „short“, welcher eine Größe von 16 Bit besitzt und somit einen Wertebereich von -32.768 bis +32.767 mit sich bringt.

datentyp int

Als Nächstes folgt in der Tabelle der Datentyp „int“ (ausgesprochen: Integer), welchen wir bereits im Blogartikel zuvor innerhalb unseres Beispiels verwendet haben. Dieser hat eine Größe von 32 Bit und umfasst einen Wertebereich von -2^31 bis +2^31 – 1. Dieser Wertebereich umfasst bereits so viele Werte, dass dieser Datentyp in den meisten Fällen bereits mehr als ausreichend ist.

datentyp long

Sollte der Datentyp „int“ aber doch mal nicht ausreichen, dann kann man noch auf den Datentyp „long“ zurückgreifen. Dieser besitzt eine Größe von 64 Bit und umfasst einen Wertebereich von -2^63 bis +2^63 – 1.

datentyp float
datentyp double

Abschließend folgen dann noch die Datentypen „float“ und „double“, in welchen man Fließkommazahlen (Zahlen mit einem Komma) speichern kann. Bei diesen Datentypen gibt der Wertebereich die Genauigkeit an. Man erhält darüber also Auskunft, auf wie viele Nachkommastellen genau der Datentyp arbeitet. Sollte die Genauigkeit überschritten werden, so kommt es zu einer automatischen Rundung, wie wir in einem späteren Beispiel noch sehen werden.

2.3. Zusätzliche Kategorisierung

Diese eben genannten acht Java Datentypen kann man jetzt noch mal kategorisieren.

Kategorie 1: „Boolean“

Hierbei handelt es sich um einen besonderen Datentyp, welcher mit Wahrheitswerten arbeitet (true/false)

​​​​​Kategorie 2: „Char“

Hier handelt es sich ebenfalls um einen besonderen Datentyp. Neben Zahlen können in diesem nämlich auch einzelne Buchstaben bzw. allgemein Zeichen abgespeichert werden.

Kategorie 3: Ganzzahl Datentypen

In diese Kategorie fallen die vier Datentypen „byte“, „short“, „int“ und „long“.

Kategorie 4: Fließkomma Datentypen

In dieser Kategorie sind die zwei Java Datentypen „float“ und „double“ beheimatet.

3. Primitive Datentypen in der Praxis

Im Folgende möchten wir uns das Thema Java Datentypen in der Praxis ansehen. Hierzu werden wir uns jetzt ein paar ausgewählte Beispiele ansehen, in welchen wir mit verschiedenen Datentypen Variablen deklarieren werden.

3.1. Beispiel mit dem Datentyp "byte"

Im ersten Beispiel verwenden wir für unsere Variable den Datentyp „byte“, den Bezeichner „test“ und anschließend initialisieren wir diese direkt mit dem Wert 120. In der nächsten Anweisung geben wir uns den Wert dieser neu initialisierten Variable mithilfe der println()-Methode auf der Konsole aus.

beispiel java datentyp boolean


Wie man auf der Ausgabe der Konsole erkennen kann, wurde wie erwartet der Wert 120 ausgegeben. Wenn wir uns nun an die Übersichtstabelle der Java Datentypen aus dem Abschnitt zuvor zurückerinnern, genauer gesagt an den Wertebereich des Datentyps „byte“, dann wissen wir, dass dieser Ganzzahlen bis maximal 127 fassen kann.

Der Wert 120 aus dem aktuellen Beispiel liegt somit im Wertebereich, weshalb das Programm auch problemlos ausgeführt werden kann und sich wie erwartet verhält.

Sobald man jetzt aber den Wertebereich überschreitet, kommt es zu einem Fehler. Dies möchten wir jetzt einfach mal bewusst tun, indem wir jetzt den Wert 120 auf 128 umändern. Da 128 nicht mehr im Wertebereich vom Datentyp „byte“ liegt, kommt es im Falle einer Programmausführung nun zu einem Fehler.

fehler wegen wertebereich überschreitung


Da wir gerade in der Entwicklungsumgebung Eclipse arbeiten, werden wir aber schon bevor es überhaupt zur Programmausführung kommt, auf diesen Fehler hingewiesen. Und zwar wird der Wert rot unterringelt und links am Zeilenanfang erscheint ein Fehler-Icon. Sobald man auf diesen Fehler-Icon klickt, erscheint folgende Meldung:

fehlermeldung wertebereichüberschreitung


Diese Fehlermeldung zeigt uns also schon, dass das Programm so nicht funktionieren wird. Da der Wert 128 zu groß für den Datentyp „byte“ ist und somit nicht in die Variable reinpasst, fasst der Computer diesen Wert 128 automatisch als „int“ auf. Deshalb auch der Hinweis, dass der „int“-Wert nicht in den Datentyp „byte“ reinpasst.

Wenn wir statt „byte“ einfach den Datentyp „short“ verwenden würden, würde es wieder einwandfrei funktionieren, da der Wertebereich von „short“ die 128 einschließt.

3.2. Beispiel mit dem Datentyp "boolean"

Als Nächstes möchte ich Dir ein Beispiel für den Datentyp „boolean“ geben, da dieser ja ein etwas speziellerer Datentyp ist. Dies liegt daran, dass der Wertebereich nur zwei Werte, nämlich den Wert „false“ und den Wert „true“ umfasst.

Im folgenden Beispiel habe ich eine Variable vom Datentyp „boolean“ deklariert und dieser den Wert „true“ zugewiesen. Anschließend habe ich diesen Wert auf der Konsole ausgegeben.

java datentypen beispiel boolean


Wie du auf der Konsolenausgabe ganz unten sehen kannst, wird auch tatsächlich der Wert „true“ auf ausgegeben. Im aktuellen Kontext (in welchem wir lediglich Inhalte von Variablen auf der Konsole ausgeben) können wir mit diesem Datentyp noch nicht wirklich etwas Sinnvolles umsetzen. Sobald wir allerdings in dieser Tutorialreihe voranschreiten und zu den if-Statements gelangen, wirst Du sehen, dass dieser Datentyp sehr wohl eine Existenzberechtigung besitzt.

3.3. Beispiel mit dem Datentyp "double"

Im letzten Beispiel möchte ich nun noch auf die Fließkomma Datentypen eingehen. Bei diesen Java Datentypen ist zu beachten, dass man die Werte die man in den entsprechenden Variablen speichert, nicht mit einem Komma schreibt, sondern mit einem Punkt:

punkt statt komma schreibweise


Dies liegt daran, dass sich im Bereich der Programmierung alles am englischsprachigen Raum orientiert und es dort eben gängig ist, einen Punkt anstatt einem Komma zu verwenden. Für uns aus dem deutschen Sprachraum ist dies also zunächst einmal gewöhnungsbedürftig.

Bei den Fließkomma Datentypen ist die Genauigkeit ein weiterer Punkt, welcher von Einsteiger häufig gar nicht beachtet wird. Im nachfolgenden Beispiel habe ich der Variable „test“ einen Wert zugewiesen, welcher insgesamt 18 Nachkommastellen besitzt.

double beispiel mit 18 nachkommastellen

Wenn wir den Inhalt der Variable nun auf der Konsole ausgeben möchten, stellt man fest, dass nicht exakt die Zahl ausgegeben wird, welche wir in die Variable gespeichert haben.

Woran liegt das? Ganz einfach, es liegt an der Genauigkeit, denn der Wertebereich vom Fließkomma Datentyp „double“ kann diese hohe Genauigkeit nicht mehr darstellen. Aus diesem Grund wird ab der Zweiten 6 der Rest gerundet (gleiche Rundungsregeln wie zu Schulzeiten). Aus diesem Grund steht anstatt der 6 nun eine 7 an der Stelle und die restlichen Zahlen dahinter sind verschwunden.

Damit hast Du nun einige Beispiele gesehen. Um den Inhalt dieses Blogartikels wirklich zu vertiefen, solltest Du nun mal selbst die Entwicklungsumgebung öffnen und etwas mit diesen Datentypen herumexperimentieren. Dadurch wirst Du sehr schnell ein Gefühl dafür erhalten, was funktioniert und was nicht funktioniert.

  • 13. September 2019
  • Java