Datentypen
Datentypen legen fest, welche Art von Information in einem Datenobjekt gespeichert werden kann und wie viel Arbeitsspeicher dafür reserviert wird.
- Primitive Datentypen
- Strukturierte Datentypen
- Generische Datentypen
- Abstrakte Datentypen
Primitive Datentypen sind fest in der Programmiersprache verankert und können über entsprechende Schlüsselwörter verwendet werden. Java kennt 8 primitive Datentypen.
| Datentyp | Größe | Wertebereich |
|---|---|---|
| boolean | - | true, false |
| char | 2 Byte | \u0000 bis \uFFFF |
| byte | 1 Byte | -128 bis +127 |
| short | 2 Byte | -32.768 bis +32.767 |
| int | 4 Byte | -2.147.483.648 bis +2.147.483.647 |
| long | 8 Byte | -9.233.372.036.854.775.808 bis +9.233.372.036.854.775.807 |
| float | 4 Byte | +/-1,4e-45 bis +/-3,4028235e+38 |
| double | 8 Byte | +/-4,9e-324 bis +/-1,7976931348623157e+308 |
Klassen werden auch als strukturierte Datentypen bezeichnet, da sie im Gegensatz zu primitiven Datentypen beliebig viele, unterschiedlich typisierte Attribute enthalten können.
Weitere Informationen zu strukturierten Datentypen finden sich im Kapitel Objektorientierte Programmierung.
Klassen, die über einen oder mehrere formale Typparameter verfügen, werden als
generische Klassen bezeichnet. Generische Klassen können mit verschiedenen
Datentypen verwendet werden und ermöglichen so die Wiederverwendung von Code bei
gleichzeitiger statischer Typsicherheit. Unter Typsicherheit versteht man,
dass Datentypen gemäß ihrer Definition verwendet werden und keine
Typverletzungen auftreten. Bei statisch typisierten Sprachen erfolgt die
Typprüfung bereits zur Kompilierzeit. Beispiele für generische Klassen sind
ArrayList<E> und HashMap<K, V>.
Weitere Informationen zu generischen Datentypen finden sich im Kapitel Generische Programmierung.
Abstrakte Datentypen sind Sammlungen von Daten zusammen mit den dazugehörigen
Operationen wie Einfügen oder Löschen. Beispiele für abstrakte Datentypen sind
Listen (z.B. ArrayList<E> und LinkedList<E>), Mengen (z.B. HashSet<E> und
TreeSet<E>), Warteschlangen (z.B. LinkedList<E> und PriorityQueue<E>)
sowie Assoziativspeicher (z.B. HashMap<K, V> und TreeMap<K, V>).
Weitere Informationen zu abstrakten Datentypen finden sich in den Kapiteln Feldbasierte Listen (ArrayLists), Listen, Java Collections Framework und Assoziativspeicher (Maps).