Java/Datentypen
Inhaltsverzeichnis
Einstieg
Elementare numerische Datentypen in Java
Datentyp | Größe | Wrapper-Klasse | Wertebereich | Beschreibung |
---|---|---|---|---|
byte | 8 Bit | java.lang.Byte | −128 ... +127 | Zweierkomplement-Wert |
short | 16 Bit | java.lang.Short | −32.768 ... +32.767 | Zweierkomplement-Wert |
int | 32 Bit | java.lang.Integer | −2.147.483.648 ... +2.147.483.647 | Zweierkomplement-Wert |
long | 64 Bit | java.lang.Long | −9.223.372.036.854.775.808 ... +9.223.372.036.854.775.807 |
Zweierkomplement-Wert |
float | 32 Bit | java.lang.Float | ±1,4E−45 ... ±3,4E+38 | Gleitkommazahl ) |
double | 64 Bit | java.lang.Double | ±4,9E−324 ... ±1,7E+308 | Gleitkommazahl doppelter Genauigkeit (IEEE 754) |
nach Java-Syntax
primitive Datentypen
Size (bits) | Example | Minimum Value | Maximum Value | Wrapper Objects | |
---|---|---|---|---|---|
[char] | 16 | char c = 'A'; | Unicode 0 | Unicode 216-1 | Character |
[short] | 16 | short s = 65; | -215 | 215-1 | Short |
[int] | 32 | int i = 65; | -231 | 231-1 | Integer |
[long] | 64 | long l = 65l; | -263 | 263-1 | Long |
[float] | 32 | float f = 65f; | Float | ||
[double] | 64 | double d = 65.55d; | Double | ||
byte | 8 | byte b = 65; | -128 | 127 | Byte |
boolean | 1 | boolean b = true; | Boolean | ||
void | - | -- | -- | -- | Void |
Casting in Java
Casting nennt man die Überführung eines Datentypen in einen Anderen. Wie man an der Tabelle zu Beginn dieser Seite sehen kann, gibt es verschiedene Basisdatentypen (boolean, Ganzzahl, Gleitkomma) mit verschiedener Größe (Bit). So sind z.B. int und byte beide Ganzzahl-Datentypen. int ist aber wesentlich mächtiger (hat mehr Bytes) als byte. Wie man sich jetzt einfach vorstellen kann ist es kein Problem vom kleineren Typ (byte) eine Zuweisung zum mächtigeren Typ (int) zu machen, da hier kein Verlust in der Genauigkeit oder der Darstellbarkeit auftreten kann. In diesem Fall nimmt unser Java-Laufzeitsystem ein implizites "automatisches" Casting vor. Anders herum ist es aber möglich mit int Zahlen zu beschreiben, die mit byte nicht mehr dargestellt werden können. Darum braucht man für diese Richtung (vom mächtigeren Typ zum kleineren Typ) ein explizites Casting. Dazu wird bei der Zuweisung der Zieldatentyp in Klammern vor den zuzuweisenden Wert gesetzt. Damit wird der Zuzuweisende Wert zuerst in den gewünschten Datentyp umgewandelt und im zweiten Schritt dem Zieldatentypen zugewiesen. Dazu ein kleines Beispiel:
int ii = 42;
byte bb = 100;
// implizites Casting ("automatisches Casting") weil int mächtiger als byte ist
ii = bb;
// explizites Casting ("direktes Casting") weil byte weniger mächtig als int ist
bb = (byte) ii;
Casting kann auch sehr effektiv genutzt werden um z.B. die ASCII-Tabelle auszugeben. Dazu läßt man eine int-Variable von 0 bis 255 laufen und castet die jeweilige Zahl einfach nach char und erhält das entsprechende ASCII-Zeichen:
for( int i=0; i<256; i++ )
System.out.println( i+" = "+(char) i ); // Ausgabe z.B. 50 = a
Java Standard: Primitive Datentypen
Didaktische Reduktion
- Eine entsprechende Tabelle
Size (bits) | Example | Minimum Value | Maximum Value | Wrapper Objects | |
---|---|---|---|---|---|
char | 16 | char c = 'A'; | Unicode 0 | Unicode 216-1 | Character |
int | 32 | int i = 65; | -231 | 231-1 | Integer |
double | 64 | double d = 65.55d; | Double | ||
boolean | 1 | boolean b = true; | Boolean | ||
void | -- | -- | -- | -- | Void |
Casting primitiver Datentypen in tabellarischer Übersicht
The following table shows the conversions between primitive types, it shows the casting operation for explicit conversions:
from char | from short | from int | from long | from float | from double | from byte | from boolean | |
---|---|---|---|---|---|---|---|---|
to char | - | (char) | (char) | (char) | (char) | (char) | N/A | |
to short | (short) | - | (short) | (short) | (short) | (short) | N/A | |
to int | - | (int) | (int) | (int) | N/A | |||
to long | - | (long) | (long) | N/A | ||||
to float | - | (float) | N/A | |||||
to double | - | N/A | ||||||
to byte | (byte) | (byte) | (byte) | (byte) | (byte) | (byte) | - | N/A |
to boolean | N/A | N/A | N/A | N/A | N/A | N/A | N/A | - |
nach: http://en.wikibooks.org/w/index.php?title=Java_Programming/Primitive_Types
Typumwandlung (typecasting) - Von double zu int zu String zu double
Die folgende Methode demonstriert, wie man in Java den Datentypen wechseln kann.
public void demonstriereDatentypWechsel(double dezimalZahl)
{
int ganzeZahl;
ganzeZahl=(int) dezimalZahl;
double dezimalZahl2;
dezimalZahl2=(double) ganzeZahl;
String eigentlichKeineZahl;
eigentlichKeineZahl=""+dezimalZahl2;
dezimalZahl2=Double.parseDouble(eigentlichKeineZahl);
ganzeZahl=Integer.parseInt(eigentlichKeineZahl);
}