Helmichs Informatik-Lexikon

Datentypen, primitive

Vorbemerkung

Java, wie viele andere Programmiersprachen, verwendet Variablen, um Daten zu speichern. Jede Variable hat einen Datentyp, wie z. B. ganze Zahl, Fließkommazahl, Wahrheitswert oder Zeichen. Dieser Typ wird beim Übersetzen des Programms festgelegt und bestimmt, welche Operationen mit der Variable ausgeführt werden können. Zum Beispiel können ganze Zahlen addiert werden, Wahrheitswerte aber nicht. Umgekehrt kann man Wahrheitswerte mit && (AND), || (OR) oder anderen logischen Operatoren verknüpfen, ganze Zahlen oder Fließkommazahlen jedoch nicht.

Da jede Variable in Java einen festen, unveränderlichen Typ hat und der Typ aller Ausdrücke zur Laufzeit feststeht, gilt Java als statisch und streng typisiert.

Primitive Attribute von Objekten

Die Objekte einer Klasse haben bestimmte Attribute, die zum Speichern von Informationen (Koordinaten, Farbe, Größe, Bezeichnung etc.) dienen. Attribute sind im Prinzip Variablen, die einer Klasse bzw. deren abgeleiteten Objekten zugeordnet sind.

public class Kreis
{
   int xpos, ypos, radius;
   double umfang;
   boolean sichtbar;
}

Diese Beispielklasse hat zwei int-Attribute zum Speichern der Position, ein double-Attribut zum Speichern des Umfangs und ein boolean-Attribut zur Speichern der Sichtbarkeit.

Nun ist es aber ein großer Unterschied, ob man eine kleine ganze Zahl wie 12, eine lange reelle Zahl wie 3.1415 oder eine sehr große ganze Zahl wie beispielsweise die Zahl der Atome im Universum speichern will (die übrigens zwischen 1080 und 1089 liegt).

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 ganze Zahlen, die größer als 255 sind, reicht 1 Byte nicht mehr aus, hierfür benötigt man mehr Speicherplatz, 2 Byte, 4 Byte oder sogar 8 Byte.

Eine Fließkommazahl benötigt in der Regel mehr Speicherplatz als eine ganze Zahl, weil ja der Teil vor dem Komma und der Teil nach dem Komma gespeichert werden muss. In Java belegen Fließkommazahlen 4 Byte oder 8 Byte (also 32 Bit oder 64 Bit).

Kommen wir nun zu den 8 primitiven Datentypen der Programmiersprache Java sowie zum mysteriösen Datentyp void:

1. Ganze Zahlen
  • byte: Kleine ganze Zahl (1 Byte Wortbreite) zwischen -128 und +127 (wird selten verwendet)
  • short: Kleine ganze Zahl (2 Byte) zwischen -215 bis +215-1 bzw. -32768 und +32767 (wird auch selten verwendet)
  • int: Ganze Zahl mit einfacher Genauigkeit (4 Byte) zwischen -231 bis +231-1 (ist der Standard-Typ für ganze Zahlen)
  • long: Ganze Zahl mit doppelter Genauigkeit (8 Byte) zwischen -263 und +263-1 (wird nur verwendet, wenn int nicht ausreicht)
2. Gleitkommazahlen
  • float: Gleitkommazahl mit einfacher Genauigkeit (4 Byte), von ±1,4 x 10-45 bis ±3,4 x 1038.
  • double: Reelle Zahl mit doppelter Genauigkeit (8 Byte), von ±4.9 x 10-324 bis ±1,78 x 10308.
  • char: Unicode-Zeichen (2 Byte), von '\u0000' bis '\uFFFF' bzw. von 0 bis 65535.
  • boolean: Wahrheitswert true oder false (1 Byte)
  • void: leerer Datentyp, wird für Methoden benutzt, die keinen Wert zurückliefern.
3. Weitere Datentypen
  • boolean: Wahrheitswert, liefert nur true oder false (1 Byte)
  • char: 16-Bit-Unicode-Zeichen (2 Byte), kann auch für einfache Zeichen wie 'a' oder '3' verwendet werden. Man achte auf die einfachen Anführungszeichen!
  • void: leerer Datentyp, wird für Methoden benutzt, die keinen Wert zurückliefern.
Verwechslungsgefahr!

Schüler und Studierende verwechseln ständig die Begriffe

  • (primitiver) Datentyp
  • Datenstruktur
  • Abstrakter Datentyp
  • Klasse

Primitive Datentypen sind einfache, festgelegte Dateneinheiten wie ganze Zahlen oder Zeichen – sie haben eine feste Größe im Speicher, etwa 1 oder 2 Byte.

Datenstrukturen bestehen aus mehreren Daten – oft Kombinationen aus primitiven Typen oder anderen Datenstrukturen. Bekannte Beispiele sind Arrays (zum Beispiel 100 ganze Zahlen) oder Binärbäume, bei denen jedes Element zwei „Kinder“ hat.

Datenstrukturen können auch verschachtelt sein: Ein Knoten in einem Baum könnte ein Array sein – oder umgekehrt mehrere Bäume in einem Array gespeichert werden.

Abstrakte Datentypen (ADTs) sind konzeptionelle Modelle, die über die Operationen definiert sind, die man mit ihnen durchführen kann – nicht über ihre konkrete Umsetzung. Sie verhalten sich wie eine "Black Box". Ein typisches Beispiel ist der Stack mit den Operationen push, pop, top und empty.

Klassen sind eine Weiterentwicklung von Datenstrukturen. Sie können ebenfalls abstrakte Datentypen repräsentieren, gehen aber darüber hinaus: Klassen können Objekte erzeugen, Methoden definieren und Interaktionen zwischen Objekten ermöglichen.