zum Inhalt springen

Primitive Datentypen

Entgegen allen bisherigen Behauptungen gibt es nicht nur Objekte in Java. Objektorientierung hat den Nachteil, dass sie die Ausführungsgeschwindigkeit eines Programms reduzieren kann, und dass sie gleichzeitig den Programmieraufwand erhöhen kann. Anweisungen wie

sind relativ aufwändig zu schreiben, zudem bewirkt sie (grob gesagt), dass die Variable zahl auf eine freie Stelle im Arbeitsspeicher referenziert, an der das eigentliche Integer-Objekt abgelegt werden kann. Um schließlich an den Wert dieses Objekts zu gelangen, wäre ein weiterer Sprung im RAM notwendig. Da Java 1.0 (bzw. die erste Version der Virtual Machine) nicht besonders effizient arbeitete, wurde daher das Konzept der primitiven Datentypen von Programmiersprachen wie Pascal oder C übernommen (Eine Programmiersprache, die komplett ohne primitive Datentypen auskommt, ist bspw. >> Smalltalk ). Primitive Datentypen sind atomar, d.h. sie lassen sich nicht weiter unterteilen bzw. bestehen nicht aus weiteren Datentypen (wie es bei Attributen von Objekten der Fall ist). Da primitive Datentypen keine Objekte sind, lässt sich bei ihnen auch der Punkt-Operator nicht anwenden.

In Java gibt es die folgenden primitiven Datentypen, deren Wertebereiche denen der Objekt-Varianten entsprechen:

Typ Objekt-VarianteWertebereich Standardwert Speicherplatzbedarf
int
Integer
-231 bis 231 -1
0
4 bytes
long
Long
-263 bis 263 -1
0
8 bytes
float
Float
-3.40282347 *10 38 bis 3.40282347 *10 38
0
4 bytes
double
Double
-1.79769313486231570 *10308 bis 1.79769313486231570 *10308
0
8 bytes
short
Short
-215 bis 215 -1
0
2 bytes
char
Character
0 bis 65535
0
2 bytes
boolean
Boolean
true, false
false
1 byte
byte
Byte
-27 bis 27 -1
0
1 byte

Die Klasse der primitiven Datentypen ist geschlossen, d.h. es ist nicht möglich, weitere (eigene) primitive Datentypen zu erfinden.

Primitive Datentypen werden ohne new-Operator erzeugt

und sollten ab sofort ihren Objekt-Varianten vorgezogen werden, da es sich um die "übliche" Art, mit Zahlen zu arbeiten, handelt. Die Objekt-Varianten der primitiven Datentypen existieren eigentlich nur aus Gründen der Kompatibilität, da manche Konstrukte in Java mit primitiven Datentypen nicht realisierbar sind.

Die Tatsache, dass es bisher möglich war, auch Anweisungen wie

zu verwenden, ohne dass Compiler-Fehler auftraten, liegt an der als Autoboxing/Autounboxing bezeichneten Fähigkeit von Java ab Version 5, primitive Datentypen automatisch in "primitive Objekte" zu verwandeln, falls dies erforderlich ist (weitere Informationen finden Sie auf der Webseite von Oracle).