Helmichs Informatik-Lexikon

Datentypen, primitive

Die Objekte einer Klasse haben bestimmte Attribute, die zum Speichern von Informationen (Koordinaten, Farbe, Größe, Bezeichnung etc.) dienen.

public class Person
{
   String name, vorname;
   int alter;
}

Diese Beispielklasse hat drei Attribute zum Speichern des Namens, des Vornamens und des Alters der Person.

Nun ist es aber ein großer Unterschied, ob man eine kleine ganze Zahl wie 12, eine lange reelle Zahl wie 3.1415 oder gar eine Adresse wie "Karl Meyer, Amselgasse 15, 12345 Musterstadt" speichern möchte.

Für eine kleine ganze Zahl wie zum Beispiel 12 reicht 1 Byte Speicherplatz aus (1 Byte = 8 Bit, also 8 Nullen und Einsen). Für Zahlen, die größer als 255 sind, reicht 1 Byte nicht mehr aus, hierfür benötigt man mehr Speicherplatz. Eine reelle Zahl benötigt in der Regel noch mehr Speicherplatz, und ein String wie "Das hier ist ein gar nicht mal allzu langer String" benötigt noch mehr Speicherplatz.

In der Programmiersprache Java muss man dem Compiler mitteilen, wie viel Speicherplatz man für das Attribut bzw. die Variable benötigt, damit möglichst effizient mit dem Speicherplatz umgegangen werden kann. Diese Mitteilung an den Compiler erfolgt während der sogenannten Deklaration der Variablen. Bei dieser Deklaration weist man der Variablen bzw. dem Attribut einen bestimmten primitiven Datentyp zu.

Es gibt allerdings auch die Möglichkeit, einem Attribut einen komplexeren Datentyp zuzuweisen. Strenggenommen darf man dann aber nicht mehr von einem Datentyp sprechen, sondern muss von einer Datenstruktur reden.

Bruch b1,b2

Bruch ist dabei eine Datenstruktur, die aus den zwei Attributen zaehler und nenner des primitiven Datentyps int besteht. In Java realisiert man solche Datenstrukturen durch Klassen, in anderen Programmiersprachen wie Pascal gibt es das Konzept des Verbundes oder Records, um solche Datenstrukturen zu realisieren.

Kommen wir nun zu den wichtigsten primitiven Datentypen der Programmiersprache Java:

  • byte: Kleine ganze Zahl (1 Byte Wortbreite) zwischen -128 und +127
  • short: Kleine ganze Zahl (2 Byte) zwischen -32768 und +32767
  • int: Ganze Zahl mit einfacher Genauigkeit (4 Byte), z.B. 155
  • long: Ganze Zahl mit doppelter Genauigkeit (8 Byte), z. B. 1343234213645653423144
  • float: Reelle Zahl mit einfacher Genauigkeit (4 Byte), z. B. 2.71
  • double: Reelle Zahl mit doppelter Genauigkeit (8 Byte), z.B. 3.14159
  • char: Zeichen, Buchstabe, z.B. 'A' (1 Byte)
  • String: Zeichenkette, z.B. "Hallo Welt!" (variable Bytezahl)
  • boolean: Wahrheitswert true oder false (1 Byte)
  • void: leerer Datentyp, wird für manipulierende Methoden benutzt, die keinen Wert zurückliefern.
Verwechslungsgefahr!

Datentypen oder "primitive Datentypen" sind in dem obigen Kasten aufgelistet. Es handelt sich quasi um "physikalische" Strukturen mit einer genau definierten Größe wie 8 Bit, 16 Bit etc.

Datenstrukturen sind zusammengesetzt aus mehreren Komponenten des gleichen Datentyps (zum Beispiel Array) oder unterschiedlicher Datentypen (zum Beispiel lineare doppelt verkettete Liste oder Baum). Auch eine Java-Klasse kann man im Grunde als Datenstruktur bezeichnen, die mit zusätzlichen Operationen ausgestattet sein kann.

Abstrakten Datentypen (ADTs) werden ausschließlich über ihre Operationen definiert, es werden überhaupt keine Aussagen über verwendete Datentypen oder Datenstrukturen gemacht.