Datentyp

Klassifizierung, die angibt, welche Art von Wert eine Variable speichern kann und welche Operationen darauf ausgeführt werden können.

Ein Datentyp definiert die Art der Daten, die in einer Variablen gespeichert werden können, und die zulässigen Operationen. Typen gewährleisten eine korrekte Datenverarbeitung.

Primitive Typen:
- Integer: Ganze Zahlen (int, long)
- Float/Double: Dezimalzahlen
- Boolean: wahr/falsch
- Character: Einzelner Buchstabe/Symbol
- String: Zeichenfolge

Zusammengesetzte Typen:
- Array: Sammlung gleichartiger Elemente
- Objekt: Benutzerdefinierte Struktur
- Struct/Record: Gruppe benannter Felder

Typsysteme:
- Statische Typisierung: Prüfung zur Kompilierzeit (Java, C++)
- Dynamische Typisierung: Prüfung zur Laufzeit (Python, JavaScript)
- Starke Typisierung: Strenge Typ-Regeln
- Schwache Typisierung: Automatische Typkonvertierung

        graph LR
  Center["Datentyp"]:::main
  Rel_boolean["boolean"]:::related -.-> Center
  click Rel_boolean "/terms/boolean"
  Rel_data_modeling["data-modeling"]:::related -.-> Center
  click Rel_data_modeling "/terms/data-modeling"
  Rel_data_structure["data-structure"]:::related -.-> Center
  click Rel_data_structure "/terms/data-structure"
  classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
  classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
  classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
  classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
  linkStyle default stroke:#4b5563,stroke-width:2px;

      

🧒 Erkläre es wie einem 5-Jährigen

Ein Datentyp ist wie verschiedene Behälter: Ein Sparschwein hält Münzen (Zahlen), ein Bücherregal hält Bücher (Texte) und eine Ampel zeigt rot/grün ([Boolean](/de/terms/boolean)). Jeder Behälter ist für seine eigene Sache gemacht!

🤓 Expert Deep Dive

Hindley-Milner-Typinferenz ermöglicht statische Typisierung ohne Annotationen. Algebraische Datentypen (Summen-/Produkttypen) ermöglichen ausdrucksstarke Modellierung. Abhängige Typen (Idris, Agda) kodieren Einschränkungen in Typen. Graduelle Typisierung (TypeScript) verbindet statisch und dynamisch. Type Erasure entfernt Typen zur Laufzeit (Java Generics).

📚 Quellen