teil 5 - javaprg2/ss2006/zicari/folien/prg2_vorlesung9... · 4 grundlagen der programmierung ii...

24
1 Teil 5 - Java Programmstruktur Operatoren Schlüsselwörter Datentypen

Upload: tranhuong

Post on 15-Aug-2019

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Teil 5 - Javaprg2/SS2006/zicari/folien/prg2_vorlesung9... · 4 Grundlagen der Programmierung II DBIS - SS2006 Zugreifbarkeit auf Methoden und Variablen public protected ohne private

1

Teil 5 - JavaProgrammstrukturOperatorenSchlüsselwörterDatentypen

Page 2: Teil 5 - Javaprg2/SS2006/zicari/folien/prg2_vorlesung9... · 4 Grundlagen der Programmierung II DBIS - SS2006 Zugreifbarkeit auf Methoden und Variablen public protected ohne private

Grundlagen der Programmierung II DBIS - SS20062 DBIS - SS2006

Kommentare in Java

// 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 „Kommentar-klammern“ 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.

In Java gibt es drei Möglichkeiten zur Kommentierung:

Page 3: Teil 5 - Javaprg2/SS2006/zicari/folien/prg2_vorlesung9... · 4 Grundlagen der Programmierung II DBIS - SS2006 Zugreifbarkeit auf Methoden und Variablen public protected ohne private

Grundlagen der Programmierung II DBIS - SS20063 DBIS - SS2006

Noch mal im Detail:Grundlegende Programmstruktur

package ... Sichtbarkeit / Ordnersystemimport ... Verfügbarmachen anderer

Klassenclass X { Name der Klasseint nummer=0;float zahl;...

KlassenkörperEnthä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)

Page 4: Teil 5 - Javaprg2/SS2006/zicari/folien/prg2_vorlesung9... · 4 Grundlagen der Programmierung II DBIS - SS2006 Zugreifbarkeit auf Methoden und Variablen public protected ohne private

Grundlagen der Programmierung II DBIS - SS20064 DBIS - SS2006

Zugreifbarkeit auf Methoden und Variablen

public

protected

ohne

private

private – nur innerhalb der Klasse sichtbar und somit zugreifbar.

ohne – nur innerhalb des Pakets, das die Deklaration der Klasse enthält (Standardzugriffsrecht).

protected – zugreifbar von Methoden der eigenen Klasse, der davon abgeleitete Klassen und von Klassen im selben Paket.

public – für Methoden aller Klassen zugreifbar (welche die Klasse importieren).

Zugriffsmodifizierer

Page 5: Teil 5 - Javaprg2/SS2006/zicari/folien/prg2_vorlesung9... · 4 Grundlagen der Programmierung II DBIS - SS2006 Zugreifbarkeit auf Methoden und Variablen public protected ohne private

Grundlagen der Programmierung II DBIS - SS20065 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;} ...

}

Page 6: Teil 5 - Javaprg2/SS2006/zicari/folien/prg2_vorlesung9... · 4 Grundlagen der Programmierung II DBIS - SS2006 Zugreifbarkeit auf Methoden und Variablen public protected ohne private

Grundlagen der Programmierung II DBIS - SS20066 DBIS - SS2006

Klassenvariablen (static)Mit Hilfe von static kann man Klassenvariablen und Klassenmethoden erzeugen, die für alle Objekte derKlasse 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!

Page 7: Teil 5 - Javaprg2/SS2006/zicari/folien/prg2_vorlesung9... · 4 Grundlagen der Programmierung II DBIS - SS2006 Zugreifbarkeit auf Methoden und Variablen public protected ohne private

Grundlagen der Programmierung II DBIS - SS20067 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 zurCompilezeit auf.

• In manchen Fällen sind die Ausnahmen bereits vorgesehen. Die entsprechenden Methoden enthalten dann eine throws-Klausel.

Page 8: Teil 5 - Javaprg2/SS2006/zicari/folien/prg2_vorlesung9... · 4 Grundlagen der Programmierung II DBIS - SS2006 Zugreifbarkeit auf Methoden und Variablen public protected ohne private

Grundlagen der Programmierung II DBIS - SS20068 DBIS - SS2006

Ausnahmen (Exceptions)

void read() throws IOException {

throw new IOException(“Datei nicht gefunden!”);

}

Page 9: Teil 5 - Javaprg2/SS2006/zicari/folien/prg2_vorlesung9... · 4 Grundlagen der Programmierung II DBIS - SS2006 Zugreifbarkeit auf Methoden und Variablen public protected ohne private

Grundlagen der Programmierung II DBIS - SS20069 DBIS - SS2006

Ausnahmen (Exceptions) Will man solche Methoden verwenden, muss dieeventuelle Ausnahme abgefangen und die entsprechendeVerhaltensweise implementiert werden. Alternativ kann die Exception einfach weiter gereicht werden.

Beispiel:

...try {

read();} catch (IOException e) {

… // im Falle einer Ausnahme}...

Page 10: Teil 5 - Javaprg2/SS2006/zicari/folien/prg2_vorlesung9... · 4 Grundlagen der Programmierung II DBIS - SS2006 Zugreifbarkeit auf Methoden und Variablen public protected ohne private

Grundlagen der Programmierung II DBIS - SS200610 DBIS - SS2006

this und supersuper: 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 Personif (this.getSemester() > 8)

System.out.println(“Achtung, Studiengebühren werden fällig!");}

}

Page 11: Teil 5 - Javaprg2/SS2006/zicari/folien/prg2_vorlesung9... · 4 Grundlagen der Programmierung II DBIS - SS2006 Zugreifbarkeit auf Methoden und Variablen public protected ohne private

Grundlagen der Programmierung II DBIS - SS200611 DBIS - SS2006

instanceofMit 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.

Page 12: Teil 5 - Javaprg2/SS2006/zicari/folien/prg2_vorlesung9... · 4 Grundlagen der Programmierung II DBIS - SS2006 Zugreifbarkeit auf Methoden und Variablen public protected ohne private

Grundlagen der Programmierung II DBIS - SS200612 DBIS - SS2006

CastingBei 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;

Diesen Vorgang nennt man casting.

Zu den primitiven Datentypen (siehe spätere Folie) existieren Regeln, welchen Typ man in welchen umformen kann.

Ist das sinnvoll?

Page 13: Teil 5 - Javaprg2/SS2006/zicari/folien/prg2_vorlesung9... · 4 Grundlagen der Programmierung II DBIS - SS2006 Zugreifbarkeit auf Methoden und Variablen public protected ohne private

Grundlagen der Programmierung II DBIS - SS200613 DBIS - SS2006

Schlüsselwörter in JavaIn Java gibt es eine Reihe von reservierten Schlüsselworten.

Sie dürfen nicht für eigene Bezeichner verwendet werden.

Die mit * gekennzeichneten Wörter sind zwar reserviert, werden aber in der Version 1.5 von Java (noch) nicht verwendet.

abstract continue float native strictfp voidassert default for new super volatile

boolean do goto* null switch whilebreak double if package synchronizedbyte else implements private thiscase enum import protected throwcatch extends instanceof public throws

char false int return transientclass final interface short true

const* finally long static try

Page 14: Teil 5 - Javaprg2/SS2006/zicari/folien/prg2_vorlesung9... · 4 Grundlagen der Programmierung II DBIS - SS2006 Zugreifbarkeit auf Methoden und Variablen public protected ohne private

Grundlagen der Programmierung II DBIS - SS200614 DBIS - SS2006

Primitive Datentypen in JavaDie übliche Struktur in Java ist das Objekt. Es gibt in Java aber auch einfache (primitive) Datentypen.

Einfachen Datentypen haben also einen vorgegeben Standardwert.

Typ Inhalt Default Bereichboolean Wahrheitswert true oder false false true oder false

char Unicode-Zeichen \u0000 \u0000 bis \uFFFFbyte Ganze Zahl mit Vorzeichen (8 Bit) 0 -128 bis 127short 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+38double Fließkommazahl (64 Bit) 0.0 ±4.9E-324 bis ±1.8E+308

Page 15: Teil 5 - Javaprg2/SS2006/zicari/folien/prg2_vorlesung9... · 4 Grundlagen der Programmierung II DBIS - SS2006 Zugreifbarkeit auf Methoden und Variablen public protected ohne private

Grundlagen der Programmierung II DBIS - SS200615 DBIS - SS2006

Operatoren in Java Operatorzeichen Art der Operatoren Auswertungsreihenfolge

++ -- + - ~ ! Unäre Operatoren von rechts nach links* / % Multiplikationsoperatoren von links nach rechts+ - Additionsoperatoren von links nach rechts<< >> >>> Verschiebeoperatoren von links nach rechts< <= > >= Vergleichsoperatoren von links nach rechts== != Gleichheitsoperatoren von links nach rechts& Bitoperator UND von links nach rechts^ Bitoperator exklusives ODER von links nach rechts| Bitoperator inklusives ODER von links nach rechts&& Logisches UND von links nach rechts?: Bedingungsoperator von links nach rechts= += -= *= /= Zuweisungsoperatoren 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.

Page 16: Teil 5 - Javaprg2/SS2006/zicari/folien/prg2_vorlesung9... · 4 Grundlagen der Programmierung II DBIS - SS2006 Zugreifbarkeit auf Methoden und Variablen public protected ohne private

Grundlagen der Programmierung II DBIS - SS200616 DBIS - SS2006

Operatoren in JavaVorsicht!:

int m = 7;

Präfix:int a = 2 * ++m; // a=16, m=8

oder Postfix:int b = 2 * m++; // a=14, m=8

Page 17: Teil 5 - Javaprg2/SS2006/zicari/folien/prg2_vorlesung9... · 4 Grundlagen der Programmierung II DBIS - SS2006 Zugreifbarkeit auf Methoden und Variablen public protected ohne private

Grundlagen der Programmierung II DBIS - SS200617 DBIS - SS2006

Kontrollstrukturen• if

• while

• for

• switch

Page 18: Teil 5 - Javaprg2/SS2006/zicari/folien/prg2_vorlesung9... · 4 Grundlagen der Programmierung II DBIS - SS2006 Zugreifbarkeit auf Methoden und Variablen public protected ohne private

Grundlagen der Programmierung II DBIS - SS200618 DBIS - SS2006

Bedingungsanweisungen (if)

if (Bedingung) Anweisung1;

if (Bedingung) {Block}

if (Bedingung) Anw1 else Anw2;

if (Bedingung) {Block} else {Block}

• Abkürzung: Bedingung ? Anw1 : Anw2Bsp: (x<y) ? x : y

Page 19: Teil 5 - Javaprg2/SS2006/zicari/folien/prg2_vorlesung9... · 4 Grundlagen der Programmierung II DBIS - SS2006 Zugreifbarkeit auf Methoden und Variablen public protected ohne private

Grundlagen der Programmierung II DBIS - SS200619 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);

Page 20: Teil 5 - Javaprg2/SS2006/zicari/folien/prg2_vorlesung9... · 4 Grundlagen der Programmierung II DBIS - SS2006 Zugreifbarkeit auf Methoden und Variablen public protected ohne private

Grundlagen der Programmierung II DBIS - SS200620 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);

}

Page 21: Teil 5 - Javaprg2/SS2006/zicari/folien/prg2_vorlesung9... · 4 Grundlagen der Programmierung II DBIS - SS2006 Zugreifbarkeit auf Methoden und Variablen public protected ohne private

Grundlagen der Programmierung II DBIS - SS200621 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.

Page 22: Teil 5 - Javaprg2/SS2006/zicari/folien/prg2_vorlesung9... · 4 Grundlagen der Programmierung II DBIS - SS2006 Zugreifbarkeit auf Methoden und Variablen public protected ohne private

Grundlagen der Programmierung II DBIS - SS200622 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

}

Page 23: Teil 5 - Javaprg2/SS2006/zicari/folien/prg2_vorlesung9... · 4 Grundlagen der Programmierung II DBIS - SS2006 Zugreifbarkeit auf Methoden und Variablen public protected ohne private

Grundlagen der Programmierung II DBIS - SS200623 DBIS - SS2006

Mehrfachauswahl (switch)• Die Variable wahl muß vom Typ

–char

–byte

–short

–int

• Nicht erlaubt sind:–long

–float

–double

–boolean

Page 24: Teil 5 - Javaprg2/SS2006/zicari/folien/prg2_vorlesung9... · 4 Grundlagen der Programmierung II DBIS - SS2006 Zugreifbarkeit auf Methoden und Variablen public protected ohne private

Grundlagen der Programmierung II DBIS - SS200624 DBIS - SS2006

Übersicht der Klammerarten• ( ) Methodenperson.getName();

• { } Blöcke {Anw1 {Anw2;Anw3} Anw4}

• [ ] Index der FeldereineZahl = stapel[3];