Variablen können unterschiedliche Datentypen annehmen. Häufig müssen sie vorab deklariert werden. Dies ist in Programmiersprachen wie Java der Fall.
Java kennt vier Gruppen von einfachen Datentypen.
Datensätze (Records oder Structs), wie sie aus anderen Sprachen bekannt sind, gibt es in Java nicht. Sie werden aber auch nicht benötigt, da ein Datensatz im Sinne der klassischen Programmiersprachen in Java als Objekt dargestellt wird, mitsamt den auf ihn anwendbaren Aktionen.
Strings haben eine Sonderrolle.
Für die Verarbeitung von Zeichenketten stellt Java die beiden Klassen String und StringBuffer zur Verfügung. Sie stellen keinen Datentyp sondern ein Objekt dar. Damit hat jeder String gewisse Eigenschaften wie etwa eine Methode length() oder charAt(i). Mehr siehe unten.
Eine kleine Übersicht zeigt die Merkmale der folgende Datentypen mit Wertebereich, Beispiel und Länge:
Gruppe |
Typ | Wertebereich | Beispiel - mit Hinweis | Länge |
ganze Zahlen: |
byte | -128...127 | y = 104; ganze Zahl | 8 Bit |
short | -32768...32767 | y = -12345; ganze Zahl | 16 Bit | |
int | -2147483648...2147483647 | y = 100000; ganze Zahl | 32 Bit | |
long | -9.2 * 1018...9.2 * 1018 | y = -1234L; ganze Zahl | 64 Bit | |
Gleitkommazahl | float | -3.4e38...3.4e38 | x = -123.45F; | 32 Bit |
double | -1.8e308...1.8e308 | x = -123.45; x = 1.0E-23 | 64 Bit | |
Boolean: | boolean | true, false - ( ja/nein) | a = true ; nur zwei Zustände | |
Zeichen: | char | ein Unicode-Zeichen* | c = 'A'; * 0-65535 | 16 Bit |
* Der Typ char dient zum Speichern einzelner Unicode-Zeichen. Es ist auch möglich, einer char-Variable ohne explizite Konvertierung Ganzzahl-Literale von 0 bis 65535 zuzuweisen. Hierbei resultiert das Zeichen des Unicode-Zeichensatzes, das die zugewiesene Nummer hat.
char c = 65; System.out.println(c); // ergibt "A"
Alle Variablen werden bei der Deklaration initialisiert. Zahlen erhalten den Wert 0, Zeichen sind mit einem Null-Zeichen vorbelegt. Bei der Deklaration gilt die folgende Reihenfolge:
Datentyp [= Initialisierungswert];
int jahr;
int monat = 2;
double x = 2.71;
char at = '@';
boolean ok = (monat==2);
String begruessung = "Guten Morgen";
Der Wert kann durch einfache Zuweisung geändert werden:
jahr = 2007;
monat = 2+4;
begruessung = "Guten Morgen"+" Knut";
Zum Vergleich zweier Variablen stehen folgende Operatoren zur Verfügung:
a == b // Gleichheit
a != b // Ungleichheit
a >= b // größer gleich
a <= b // kleiner
x && y // logisches UND
x || y // logisches ODER
x ^ y // XOR
!x // Verneinung
Typkonvertierung (type casting)
Die primitiven Datentypen sind entsprechend der mathematischen Beziehung geordnet:
byte | ---> | short | ---> | int | ---> | long | ---> | float | ---> | double |
| char |
||||||||||
boolean |
In Pfeilrichtung kann Java selbst die Konvertierung durchführen. In die entgegengesetzte Richtung macht eine automatische Konvertierung keinen Sinn, da unter Umständen Information verloren geht. Durch Angabe des Typs in Klammern kann eine Konvertierung erzwungen werden.
byte b = 9;
int x = b; // ok, da byte kompatibel zu int ist
float f = x+b; // ok f = 18.0
double y = 2.6;
int i = y; // Fehler !
int j = (int) y; // ok - aber y wird abgeschnitten (j=2)
int s = (int) y/3; // ok - s=0
char c = (char) 65; // ok - c='A' (ascii)
int k = (int) c; // ok - k=65
mehr:
http://www.rene-grothmann.de/java/kurs/Variablen.html#Datentypen http://www.dpunkt.de/java/Die_Sprache_Java/Die_Sprachelemente_von_Java/25.html