Advanced   Java   Services Datentypen und Variable Back Next Up Home

Unser erstes Programm brachte lediglich eine Ausgabe auf die Konsole. Um mehr zu erreichen, brauchen wir u.a. die Möglichkeit Werte für Berechnungen zu speichern. Am Anfang eines Programms (oder auch später) vereinbart man Speicherplätze, auf die man dann im Laufe des Programms zugreift. Diese werden zur Laufzeit im Hauptspeicher realisiert. Man gibt den Speicherplätzen symbolische Namen, aus denen das Betriebssystem zur Laufzeit physikalische Adressen macht. Diese Namen heißen Bezeichner. Nicht alle Namen sind erlaubt, dazu später mehr. Gültige Bezeichner sind etwa  zahl  oder  wort  oder   woRT . Wie immer wird Groß- und Kleinschreibung unterschieden (casesensitiv). Es bedeuten also  wort  und  woRT  zwei verschiedene Speicherplätze. Einen Speicherplatz nennen wir ab jetzt eine Variable. Variablen haben bestimmte Werte, die sich während des Programmablaufs ändern können.
Namen für Variable reichen nicht aus, man muß auch die Struktur des Speicherplatzes angeben, oder anders gesagt, man muß angeben, was für einen Typ die Variable haben soll. In Java unterscheidet man zwischen Typen für ganze Zahlen oder Kommazahlen oder Zeichen oder Wahrheitswerten. Damit haben wir (zunächst) vier verschiedene Grunddatentypen vorgestellt.

Datentypspeichert
 int ausschließlich ganze Zahlen
 double Kommazahlen und ganze Zahlen
 char Zeichen
 boolean Die Wahrheitswerte true oder false

Die Namen int, double, char und boolean sind reservierte Namen und dürfen nur in diesem Zusammenhang benutzt werden. Eine vollständige Liste der Datentypen findet sich unter diesem Link.


Vereinbarungsebene (Deklaration bzw. Definition)

Eine Vereinbarung hat die Form

datentypname  bezeichner1,  bezeichner2,  bezeichner3 ;

Es ist ein guter Brauch, Variablen am Anfang eines Blockes zu vereinbaren, also nach einer sich öffnenden geschweiften Klammer. Objektorientierte Sprachen wie Java erlauben jedoch auch noch spätere Vereinbarungen. Im folgenden finden sie Vereinbarungen am Anfang von main:

public static void main(String[] args)
{
   int a, b, c ;
   // Vereinbarung von drei Variablen vom Typ int (ohne Wertzuweisung)
   double x=2.7, y=7.2, z=27 ;
   // Vereinbarung von drei Variablen vom Typ double (mit Wertzuweisung)
}

Die Liste muß mit einem Semicolon abgeschlossen werden. Statt Vereinbarung sagt man auch Deklaration oder Definition. Eine Wertzuweisung bei der Deklaration nennt man Initialisierung. Hat man Variable nicht initialisiert, muß man das spätestens vor der ersten Verwendung tun.


Anweisungsebene (Statements)

Eine Anweisung oder ein Statement "macht" etwas mit den vereinbarten Variablen. Dazu erweitern wir das obige Beispiel.

public static void main(String[] args)
{
   int a, b, c ;
   double x=2.7, y=7.2, z=27 ;

   a = 17 ; //Wertzuweisung, a erhält den Wert 17
   b = a ;  // Wertzuweisung, b erhält den Wert von a
   c = 3*a - a/2 ; // Wertzuweisung, c erhält den Wert einer Berechnung
   System.out.println("c = " + c);  // Ausgabe von c auf die Konsole
   System.out.println("Das wars vorerst");
}

Es gibt eigentlich nur drei Arten von Statements, zwei davon sehen wir oben, Zuweisungen und Unterprogrammaufrufe, in objektorientierter Sprache Methodenaufrufe genannt. Die dritte Variante ist ein Statement, das mit Hilfe einer Kontrollstruktur gebildet wird, also etwa mit einer Verzweigung (if/else) oder einer Schleife (for). Diese Art von Statement zerfällt meist wieder in mehrere Teilstatements.


Bezeichner (Regeln und Konventionen)

Welche Namen soll man den Variablen geben. a, b, c sind zwar kurz, aber nichtssagend. Besser sind sprechende Namen. Werden sie geschickt gewählt, so kann man sich erklärende Kommentare sparen. Einen Kommentar schreibt man in der Regel nur an einer einzigen Stelle, die Variable aber unter Umständen ziemlich oft. Und dabei erklärt sie sich ein jedesmal aufs neue, und das ist ein großer Vorteil. Hier z.B. die Bezeichner von einigen Variablen, die selbsterklärend sind:

boolean  leftTextChanged ,  rightTextChanged ;
double  loesung1 ,   loesung2 ;
int  index ;


Regeln für Bezeichner

Bezeichner bestehen aus Buchstaben, Ziffern, dem Unterstrich (underscore) und Währungssymbole. Den Buchstaben liegt dabei der Unicode und nicht der ASCII-Code zugrunde. Dadurch sind eine Vielzahl von besonderen Buchstaben erlaubt wie deutsche Umlaute oder Vokale mit Akzenten usw. Der besseren Lesbarkeit wegen sollte man sich aber auf die Menge der lateinischen Buchstaben beschränken. Bezeichner dürfen nicht mit einer Ziffer beginnen. Ein paar Beispiele:



zahl,  zahl2,  zahl_2,  not_ok ;    // zulässig und üblich
$dollar,  _zahl2 ;    // zulässig, aber selten
ångström,  grüße ;    // zulässig, aber nicht üblich
1index,  not-ok,  dir/bin ;    // falsch


Konventionen für Bezeichner

Bezeichner für Variablen beginnen mit einem kleinen Buchstaben, ebenso Bezeichner für Methoden, Bezeichner für Klassen beginnen mit einem großen Buchstaben. Bei zusammengesetzen Namen beginnt jeder Teilname mit einem großen Buchstaben (englisch: camelcase). Besonders bei Klassennamen und Methoden wird diese Konvention strikt eingehalten. Einige Beispiele aus der Standardklassenbibliothek JFC (Java Foundation Classes) :

Drei Klassennamen

DefaultListSelectionModel    FilterInputStream     InternalFrameAdapter

Drei Namen von Methoden

getContentPane()    setDefaultCloseOperation()     addWindowListener()

Nicht gerade kurz, diese Namen, aber recht einprägsam. Es wird empfohlen, sich an diese Konventionen zu halten. Alle Profis tun dies. Diese Spielregeln erhöhen die Lesbarkeit von Quellcode drastisch. Es könnte ja mal auch Vorkommen, daß man ein fremdes Programm liest (lesen muß) oder das eigene, ein paar Monate später...

Übung

Datentypen und Variable

Valid XHTML 1.0 Strict top Back Next Up Home