5 Datentypen, die jeder Entwickler mindestens kennen muss.

Veröffentlicht: vor 8 monaten · Lesedauer ca. 8 Minuten

Wenn man mit dem „richtigen“ programmieren anfängt (und ich meine nicht sowas wie Ameisen durch ein Labyrinth steuern), sieht man die Dinger an jeder Ecke.

Zunächst versucht man die auszublenden, zu ignorieren. Doch dann kommt man nicht drum rum sich auf darauf einzulassen und sich doch mal die Frage zu stellen:

Was zur Hölle ist, dieses double? Das hat doch jetzt mal gar nichts mit einer Zwei zu tun.

Die Rede ist natürlich von Datentypen. Und Datentypen sind verdammt wichtig. In Script-Sprachen (wie z. B. php, JavaScript, Python) sieht man Datentypen zunächst nicht, sie sind aber da. Sie sind quasi wie Luft. Unsichtbar, aber lebensnotwendig.

Doch wieso sind die so wichtig?

Nun gut, alles der Reihe nach. Zunächst möchte ich eine viel wichtige Frage beantworten 🙂

Welche Datentypen gibt es überhaupt?

In den heutigen Programmiersprachen gibt es haufenweise Datentypen. Es wäre komplett unmöglich hier alle aufzulisten. Dies liegt schon alleine daran, das man sich ein Datentyp auch komplett selber schreiben kann.

Jedoch gibt es sogenannte „primitive Datentypen„, die in jeder Programmiersprache gleich oder ähnlich ist.

Die primitiven Datentypen lassen sich wiederum in mehrere Gruppen zusammenfassen.

Natürliche Zahlen (byte/uint)

Als eine natürliche Zahl bezeichnet man alle Zahlen die größer (oder auch gleich) 0 sind.

Die Informatik beinhaltet hierfür – teilweise historisch bedingt – gleich mehrere Datentypen.

Dabei unterscheiden sich die jeweiligen Datentypen in genau zwei Eigenschaften.
Zum einen Wäre es die maximal darstellbare Zahl und zum anderen die Menge des benötigten Speichers.

  • byte → 8 bit → { 0 ≤ x ≤ 255 }
  • ushort → 16 bit → { 0 ≤ x ≤ 65.535 }
  • uint → 32 bit → { 0 ≤ x ≤ 4.294.967.295 }
  • ulong → 64 bit → { 0 ≤ x ≤ 18.446.744.073.709.551.615 }

Byte ist tatsächlich der einzige Datentyp, für den es kein ubyte Gegenstück gibt und somit auch der einzige, der keine negativen Werte darstellen kann.

Das U vor den Datentypen, steht jeweils für unsigned. Also Vorzeichenlos.

Ganze Zahlen (int/long)

Ganze Zahlen sind den natürlichen Zahlen sehr ähnlich. Der einzige Unterschied ist, dass hier genau ein bit für das Vorzeichen benötigt wird. Es können zwar genauso viele Werte abgebildet werden, jedoch ist der Zahlenbereich verschoben. Die maximal darstellbare Zahl ist jedoch nur noch halb so groß.

  • short → 16 bit → { -32.768 ≤ x ≤ 32.767 }
  • int → 32 bit → { -2.147.483.648 ≤ x ≤ 2.147.483.647 }
  • long → 64 bit → { -9.223.372.036.854.775.808 ≤ x ≤ 9.223.372.036.854.775.807 }

Gleitkommazahlen (float/double)

Nun haben wir bereits gesehen, dass wir zahlen bis hin zu 18,4 Trillionen darstellen können.

Für eine Berechnung wird jetzt aber eine Zahl in Sextillionen Bereich (das ist eine Eins mit 36 nullen dran :-)) benötigt.

Ja, und jetzt?

Na gut, dann könnten wir noch ein 128 bit Zahlenwert erfinden (und den wird es bestimmt auch noch geben).

Und wie soll eigentlich eine Zahl wie 2,5 abgebildet werden? Mit ganzen Zahlen schon einmal nicht!

Für beide Varianten kommen Gleitkommazahlen infrage. Hier können nämlich nicht nur sehr große, sondern auch sehr kleine Zahlen abgebildet.

Die Frage, die sich dann immer nur stellt ist: „Wie genau willst du es den haben?

  • float → 16 bit → ± 3.4 × 1038
  • double → 32 bit → ± 1.8 × 10308

Jedoch Vorsicht mit den Angaben. Es lassen sich beim besten Willen nicht alle Zahlen in dem gegebenen Zahlenraum im Speicher genau abbilden. Noch nicht einmal ungenau.

So lässt sich noch nicht einmal die 7. Nachkommastelle der Zahl π als float genau darstellen. Man hat also die Wahl zwischen 3,1415925 und 3,1415927 aber nicht 3,1415926.

Generell können irrationale Zahlen in der Informatik nicht genau darstellen.

Doch warum ist das so?

Naja, um das genau zu beschreiben, würde den Umfang der einfachen Datentypen sprengen. Ganz grob kann man sagen, dass man zur Abbildung einer Zahl drei Zahlen benötigt.

Eine für das Vorzeichen (immer 1 bit), eine für die Verschiebung (8 bzw. 11 bit) und die eigentliche Zahl selbst (23 bzw. 52 bit).

Möchtest du mehr dazu wissen, kannst du dir gerne das IEEE 754-1989 Format hier und hier ansehen. Es gibt auch diverse Tools im Netz, die ein float darstellen können, so wie der und der.

double pi = 3.14152;

Zeichen (char)

Eine Applikation, in der nur Zahlen zu sehen sind, wäre wohl ziemlich langweilig, oder?

Neben den bereits genannten Zahlen kann man auch einzelne Zeichen auf dem Bildschirm ausgeben. Und wer hätte das gedacht? Auch mehrere Zeichen hintereinander. Die wiederum sogar ganze Wörter darstellen können 🙂

Okay, okay, streng genommen ist ein Zeichen auch nur eine Zahl und somit kann damit auch gerechnet werden.

Jedes darstellbare Zeichen ist einer Zahl zugeordnet. Und jede dieser Zahlen beansprucht jeweils mindestens ein Byte im Speicher (oder auf der Festplatte).

Die Zuordnung erfolgt jeweils anhand einer ASCII-Tabelle.

Aber keine Angst, du musst jetzt nicht so eine Tabelle auswendig lernen. Die modernen Sprachen verstehen es auch, wenn man das Zeichen direkt schreibt.

char a = (char)97; // OK, aber unnötig, da zu kryptisch
char b = 'b'; // besser, da man sofort sieht, was gemeint ist

Ganze Wörter, sind übrigens als Zeichen nicht gemeint.

Wörter (string) sind nämlich eine Auflistung an verschiedenen Zeichen. Soll heißen, es ist ein Character-Array.

Das ist auch ein Grund, warum man auf einen einzelnen Buchstaben gezielt zugreifen kann.

string helloWorld = "Hallo Welt";
char e = helloWorld[7];

Logische Werte

Der wohl einfachste Datentyp aus der Reihe ist der boolean.

Ein boolean (oder kurz bool) kann nämlich genau zwei Werte annehmen.

True oder False.

1 oder 0.

Ja oder Nein.

Ich glaube, du hast es verstanden 🙂

Das ist auch der einzige Datentyp, mit dem man Vergleiche anstellen kann.

bool isUnderAged = age < 18;

Fazit – Datentypen?

In den meisten Fällen kommt man mit genau vier Datentypen aus.

Dies ist der int(eger) für ganze Zahlen, das double für „Kommazahlen“, string für diverse Texte und ein bool für logische Operationen.

Andere Datentypen, wie z. B. den long verwendet man nur, wenn mal der int zu klein sein sollte.

Ein short wird nur noch in Speicherintensiven bzw. -sensiblen Applikationen verwendet. Sowas wie ein uint verwendet hingegen nahezu gar nicht.

Bytes wiederum verwendet man nur, wenn man mit Dateien hantiert. Wird eine Datei eingelesen, so befindet sich die Datei zunächst einmal als Byte-Array im Speicher. Erst im nächsten Schritt wird die Datei entsprechend Verarbeitet.

Kategorien:
Grundlagen
Das könnte dir auch gefallen
Sei der erste und teile deine Meinung mit der Welt!
... und was meinst du dazu?
Deine E-Mail-Adresse wird nicht veröffentlicht.