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).