Datentypen und Variablen

Datentypen und Variablen

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.

  • Ganzzahltypen intbyteshort, und long
  • Gleitkommatypen float und double
  • logischer Typ boolean
  • Zeichentyp char

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