Prof. Dr. Pape - Java Programmierrichtlinien - Primitive Datentypen

Deutsch

Verschiedenes - Primitive Datentypen

Zurück zur Übersicht

Primitive Datentypen

Regel: Verwende möglichst int statt byte, short oder long
Regel: Verwende möglichst double statt float
Regel: Mische möglichst keine verschiedenen Zahlentypen in einem Ausdruck.
Regel: Verwende wissenschaftliche Notation nur bei sehr kleinen oder sehr großen Zahlen.
Begründung: Vermeiden von Fehlern und bessere Lesbarkeit

Beispiel

Statt 1.52E+5 besser 15200 schreiben. Aber lieber 1E-12 statt 0.000000000001.

Begründung

byte und short haben im Gegensatz zu int und long einen relativ kleinen Wertebereich. Da ein Überlauf in Java anderes als in C# nicht durch eine Ausnahme angezeigt wird, sollte möglichst mit Datentypen höherer Genauigkeit gerechnet werden. int ist meist ausreichend vom Wertebereich und schneller als long. Es ist dabei normalerweise auch nicht langsamer als byte oder short, da die interne Prozessorregister heutzutage mindestens 32bit breit sind. Es entfällt auch das bei long lästige Schreiben von l oder L hinter jeder Zahl. Wenn ein Java-Programm innerhalb einer Java Virtual Machine abläuft benötigen alle Werte entweder 32 Bit oder 64 Bit (long, double). Bei byte und short wird intern immer mit int-Werten gerechnet.

Float hat gegenüber double eigentlich nur den Vorteil halb so viel Speicher zu verbrauchen – Speicherverbrauch ist heutzutage aber kein Problem mehr. Die Berechnungen mit float sind normalerweise nicht schneller als mit double, da Mikroprozessoren intern mindestens mit der Genauigkeit von double rechnen. Teilweise kann float sogar langsamer sein, da die Konvertierung vom internen Gleitkommaformat zu float mehr Zeit kosten kann als zu double: insbesondere, falls die CPU intern immer mit double rechnet. Analog wie bei long entfällt auch das lästige Schreiben von f oder F hinter jeder Floatzahl.

Verschiedene Zahlentypen in einem Ausdruck zu mischen sollte vermieden werden, da dadurch unbeabsichtigt Fehler entstehen. Zum Beispiel ist der folgende Ausdruck immer 0, auch wenn x ein double Wert ist: 5 / 9 * x . Ebenso kann es bei der impliziten Konvertierung von z.B. int (31 bit für positive Zahlen) nach float (23 Bit) zu Fehlern kommen - diese werden nicht vom Compiler angezeigt.

Die wissenschaftliche Notation sollte nur bei sehr großen oder sehr kleinen Zahlen (ab ca. 7-8 Ziffern) angewendet werden, da diese Notation für den Menschen sonst schwerer zu verstehen ist.