Teil 5 - Java Programmstruktur Operatoren Schlüsselwörter Datentypen 1 Kommentare in Java In Java gibt es drei Möglichkeiten zur Kommentierung: // Kommentar Alle Zeichen nach dem „//“ werden ignoriert. Îfür „normale“ einzeilige Kommentare. /* Kommentar über mehrere Zeilen */ Alle Zeichen zwischen dem „/*“ und dem „*/“ werden ignoriert. Î auskommentieren von Programmteilen. Die Schachtelung der „Kommentarklammern“ ist nicht erlaubt. /** * javadoc-Kommentar * @since JDK1.0 */ Alle Zeichen zwischen dem „/**“ und dem „*/“ werden ignoriert. Î für das javadoc-Programm des JDK. Mit ihrer Hilfe wird eine einfache Online-Dokumentation erstellt. 2 Grundlagen der Programmierung II DBIS - SS2006 Noch mal im Detail: Grundlegende Programmstruktur package ... Sichtbarkeit / Ordnersystem import ... Verfügbarmachen anderer Klassen class X { Name der Klasse } 3 int nummer=0; float zahl; ... Klassenkörper Enthält Variablen, ... X {...} Konstruktor (heißt wie die Klasse, erzeugt das Objekt, hat kein Rückgabewert) Methode1 {...} Methode2 {...} Die verschiedenen Methoden, welche die eigentliche Funktionalität einer Klasse ergeben. Ende der Klasse (des ~körpers) Grundlagen der Programmierung II DBIS - SS2006 Zugreifbarkeit auf Methoden und Variablen private – nur innerhalb der Klasse sichtbar und somit zugreifbar. private ohne – nur innerhalb des Pakets, das die Deklaration der Klasse enthält (Standardzugriffsrecht). ohne protected public protected – zugreifbar von Methoden der eigenen Klasse, der davon abgeleitete Klassen und von Klassen im selben Paket. Zugriffsmodifizierer public – für Methoden aller Klassen zugreifbar (welche die Klasse importieren). 4 Grundlagen der Programmierung II DBIS - SS2006 Beispiel: package mypackage; import java.util.*; /* nicht nötig */ /** * Klasse die Studenten darstellen soll. */ public class Student { private int semester; public Student() {} // default Konstruktor optional! /** * Setzt die Semesterzahl. */ public void setSemester(int sem) { semester=sem; } /** * Gibt die Semesterzahl zurück. */ public int getSemester() { return semester; } ... } 5 Grundlagen der Programmierung II DBIS - SS2006 Klassenvariablen (static) Mit Hilfe von static kann man Klassenvariablen und Klassenmethoden erzeugen, die für alle Objekte der Klasse gleich sind. public class Person { … static int countPerson; public Person() { countPerson++; } public static int getCountPersonen() { return countPerson; } … Die Variable countPerson ist für alle Instanzen der Klasse Person gleich! 6 Grundlagen der Programmierung II DBIS - SS2006 Ausnahmen (Exceptions) • Es gibt außergewöhnliche Bedingungen, die es nicht gestatten im Code normal fortzufahren, z.B. wenn man auf eine Datei zugreifen möchte, die nicht existiert. • Die Fehler treten somit zur Laufzeit und nicht zur Compilezeit auf. • In manchen Fällen sind die Ausnahmen bereits vorgesehen. Die entsprechenden Methoden enthalten dann eine throws-Klausel. 7 Grundlagen der Programmierung II DBIS - SS2006 Ausnahmen (Exceptions) void read() throws IOException { … throw new IOException(“Datei nicht gefunden!”); … } 8 Grundlagen der Programmierung II DBIS - SS2006 Ausnahmen (Exceptions) Will man solche Methoden verwenden, muss die eventuelle Ausnahme abgefangen und die entsprechende Verhaltensweise implementiert werden. Alternativ kann die Exception einfach weiter gereicht werden. Beispiel: ... try { read(); } catch (IOException e) { … // im Falle einer Ausnahme } ... 9 Grundlagen der Programmierung II DBIS - SS2006 this und super super: Ermöglicht den Zugriff auf die Methoden der Oberklasse. this: “Zeigt” auf das aktuelle Objekt. Beispiel: public class Student extends Person { private int semester; public int getSemester() { return this.semester; } public void incrementAge() { super.incrementAge(); //Aufruf der Methode in Person if (this.getSemester() > 8) System.out.println(“Achtung, Studiengebühren werden fällig!"); } } 10 Grundlagen der Programmierung II DBIS - SS2006 instanceof Mit instanceof kann die Klassenzugehörigkeit geprüft werden. ... Object o = xyz.get(); if (o instanceof Student) int i = ((Student)o).getAge(); ... Beachte: Ein Objekt ist immer auch Element seiner Oberklassen. 11 Grundlagen der Programmierung II DBIS - SS2006 Casting Bei der Deklaration eines Objektes wird die entsprechende Klasse, zu der es gehört, angegeben. Es ist möglich dieses Objekt in ein Objekt einer Oberklasse zu verwandeln, z.B.: … Student s = new Student(4); Person p = (Person)s; Ist das sinnvoll? … Diesen Vorgang nennt man casting. Zu den primitiven Datentypen (siehe spätere Folie) existieren Regeln, welchen Typ man in welchen umformen kann. 12 Grundlagen der Programmierung II DBIS - SS2006 Schlüsselwörter in Java In Java gibt es eine Reihe von reservierten Schlüsselworten. Sie dürfen nicht für eigene Bezeichner verwendet werden. abstract assert continue default float for native new strictfp super boolean break byte case catch do double else enum extends goto* if implements import instanceof null switch package synchronized private this protected throw public throws char class false final int interface return short transient true const* finally long static try void volatile while Die mit * gekennzeichneten Wörter sind zwar reserviert, werden aber in der Version 1.5 von Java (noch) nicht verwendet. 13 Grundlagen der Programmierung II DBIS - SS2006 Primitive Datentypen in Java Die übliche Struktur in Java ist das Objekt. Es gibt in Java aber auch einfache (primitive) Datentypen. Typ Inhalt boolean Wahrheitswert true oder false char Unicode-Zeichen byte Default Bereich false true oder false \u0000 \u0000 bis \uFFFF Ganze Zahl mit Vorzeichen (8 Bit) 0 -128 bis 127 short Ganze Zahl mit Vorzeichen (16 Bit) 0 -32768 bis 32767 int Ganze Zahl mit Vorzeichen (32 Bit) 0 -231 bis 231-1 long Ganze Zahl mit Vorzeichen (64 Bit) 0 -263 bis 263-1 float Fließkommazahl (32 Bit) 0.0 ±1.4E-45 bis ±3,4E+38 double Fließkommazahl (64 Bit) 0.0 ±4.9E-324 bis ±1.8E+308 Einfachen Datentypen haben also einen vorgegeben Standardwert. 14 Grundlagen der Programmierung II DBIS - SS2006 Operatoren in Java Operatorzeichen ++ -- + - ~ ! * / % + << >> >>> < <= > >= == != & ^ | && ?: = += -= *= /= Art der Operatoren Auswertungsreihenfolge Unäre Operatoren Multiplikationsoperatoren Additionsoperatoren Verschiebeoperatoren Vergleichsoperatoren Gleichheitsoperatoren Bitoperator UND Bitoperator exklusives ODER Bitoperator inklusives ODER Logisches UND Bedingungsoperator Zuweisungsoperatoren von rechts nach links von links nach rechts von links nach rechts von links nach rechts von links nach rechts von links nach rechts von links nach rechts von links nach rechts von links nach rechts von links nach rechts von links nach rechts von rechts nach links • Treten mehrere Operatoren zusammen auf, werden sie in der Reihenfolge ihrer Priorität ausgeführt. ( Î vgl. mit der Mathematik: „Punkt vor Strich“) • Die Priorität nimmt in der Tabelle von oben nach unten ab. 15 Grundlagen der Programmierung II DBIS - SS2006 Operatoren in Java Vorsicht!: int m = 7; Präfix: int a = 2 * ++m; // a=16, m=8 oder Postfix: int b = 2 * m++; 16 // a=14, m=8 Grundlagen der Programmierung II DBIS - SS2006 Kontrollstrukturen • if • while • for • switch 17 Grundlagen der Programmierung II DBIS - SS2006 Bedingungsanweisungen (if) if (Bedingung) Anweisung1; if (Bedingung) {Block} if (Bedingung) Anw1 else Anw2; if (Bedingung) {Block} else {Block} • Abkürzung: Bsp: 18 Bedingung ? Anw1 : Anw2 (x<y) ? x : y Grundlagen der Programmierung II DBIS - SS2006 Unbestimmte Schleifen (while) Nur wenn die Bedingung wahr ist, wird der Block ausgeführt: while (Bedingung) { Block } Der Block wird auf jeden Fall einmal durchlaufen: do { Block } while (Bedingung); 19 Grundlagen der Programmierung II DBIS - SS2006 Bestimmte Schleifen (for) Anzahl der Durchläufe muss vorher bekannt sein: int i; for (i = 1; i <= 10; i++) { System.out.println(i); } 20 Grundlagen der Programmierung II DBIS - SS2006 Mehrfachauswahl (switch) • Soll eine Variable auf mehrere Werte überprüft werden, dann kann die If-Anweisung unübersichtlich werden. • Eine switch-Anweisung ist für solche Fälle besser geeignet. 21 Grundlagen der Programmierung II DBIS - SS2006 Mehrfachauswahl (switch) int wahl = Console.readInt(“Eine Option wählen (1 bis 4)“); switch (wahl) { case 1: . . . break; case 2: . . . break; case 3: . . . break; case 4: . . . break; default: . . . break; // Falsche eingabe } 22 Grundlagen der Programmierung II DBIS - SS2006 Mehrfachauswahl (switch) • Die Variable wahl muß vom Typ – char – byte – short – int • Nicht erlaubt sind: – long – float – double – boolean 23 Grundlagen der Programmierung II DBIS - SS2006 Übersicht der Klammerarten • ( ) Methoden person.getName(); • { } Blöcke {Anw1 {Anw2;Anw3} Anw4} • [ ] Index der Felder eineZahl = stapel[3]; 24 Grundlagen der Programmierung II DBIS - SS2006