Java- Syntax

60
Java- Syntax

description

Java- Syntax. Bestandteile der Sprache Java:. Ausdrücke. Anweisungen. Ausdruck. Ein Ausdruck ist eine Folge von Operatoren und Operanden. Ein Ausdruck ist - grob gesagt - ein Term oder eine mathematische Formel. Jeder Ausdruck hat einen Wert !!. Es gibt folgende Ausdrücke:. - PowerPoint PPT Presentation

Transcript of Java- Syntax

Page 1: Java- Syntax

Java- Syntax

Page 2: Java- Syntax

Bestandteile der Sprache Java:

•Ausdrücke

•Anweisungen

Page 3: Java- Syntax

Ausdruck

Page 4: Java- Syntax

Ein Ausdruck ist eine Folge von Operatoren und Operanden. Ein Ausdruck ist - grob gesagt - ein Term oder eine mathematische Formel.

Jeder Ausdruck hat einen Wert !!

Page 5: Java- Syntax

Es gibt folgende Ausdrücke:

- arithmetische Ausdrücke

- relationale und logische Ausdrücke

- Zuweisungsausdrücke

Page 6: Java- Syntax

ArithmetischeAusdrücke

Page 7: Java- Syntax

Beispiele:In allen folgenden Beispielen wird stillschweigend vorausgesetzt, dass die benutzten Variablen alle vorher deklariert wurden!!!

Page 8: Java- Syntax

3Literal (Konstante),

Wert des Ausdrucks: 3

3+5-2 Wert des Ausdrucks: 6

3+kein Ausdruck

(syntaktisch falsch)

xy Variable, Wert des Ausdrucks: unbekannt,

da der Wert von xy in diesem Zusammenhang dem Programmierer nicht bekannt ist.

2x keine Variable: Variablenname darf nicht mit einer Ziffer beginnen !

(syntaktisch falsch)

Page 9: Java- Syntax

3+x-2x kein Ausdruck, da * in 2x fehlt(syntaktisch falsch)

x+3

x-y/b+3-(3+y)*4Wert des Ausdrucks: unbekannt

27%4ganzzahliger Rest bei der Division:

27 : 4 = 6 Rest 3, also Wert des Ausdrucks: 3

/ bedeutet Division, zuerst werden Klammern ausgewertet,

dann Punkt vor Strich

Ausdruck, Wert des Ausdrucks: unbekannt

Page 10: Java- Syntax

26%4

a++ erhöht a um 1, Wert des Ausdrucks: unbekanntb--

verringert b um 1,Wert des Ausdrucks: unbekannt

ganzzahliger Rest bei der Division: 26 : 4 = 6 Rest 2, also

Wert des Ausdrucks: 2

25%4 ganzzahliger Rest bei der Division: 25 : 4 = 6 Rest 1, also

Wert des Ausdrucks: 1

24%4 ganzzahliger Rest bei der Division: 24 : 4 = 6 Rest 0, also

Wert des Ausdrucks: 0

Page 11: Java- Syntax

Relationale und logische Ausdrücke

Page 12: Java- Syntax

Relationale und logische Ausdrücke sind

wahr (true)oder

falsch (false)und haben den Datentyp

boolean

Page 13: Java- Syntax

Kleiner Ausflug in die formale Logik

Page 14: Java- Syntax

Die zusammengesetzte Aussage A UND Bist nur wahr, wenn A und B wahr sind, ansonsten ist sie falsch

Page 15: Java- Syntax

Die zusammengesetzte Aussage A ODER Bist nur falsch, wenn A und B falsch sind, ansonsten ist sie wahr.

Page 16: Java- Syntax

Die negierte Aussage NICHT Aist falsch, wenn A wahr ist und wahr, wenn A falsch ist.

Page 17: Java- Syntax

Diese Zusammenhänge lassen sich auch mit einer

sogenannten Wahrheitstafeln darstellen:

Page 18: Java- Syntax

A B A und B A oder BW W W WW F F WF W F WF F F F

Page 19: Java- Syntax

A nicht AW FF W

Page 20: Java- Syntax

Java kennt aber kein "wahr" oder "falsch",

sondern:

Ausdruck Wertfalsch false

wahr true

Page 21: Java- Syntax

Beispiele:

Page 22: Java- Syntax

0 < 5

8 > 9x+3 >= 51 == 2 Wert: false

1 != 3

Wert: true

Wert: false

Wert: true

Wert hängt von x ab: Für x grösser oder gleich 2: trueFür x kleiner 2: false

mathematisches =

mathematisches

Page 23: Java- Syntax

4 < x < 7

Relationale Operatoren sind zweistellig und dürfen nur mit zwei Operanden arbeiten. Deswegen ist folgende Zeichenkette kein Ausdruck:

Page 24: Java- Syntax

LogischeAusdrücke

Page 25: Java- Syntax

Beispiele:

Page 26: Java- Syntax

a && b

x || y(x>0) && (x<10)!(x<y)

logisches UND

logisches ODER

logisches NICHT

Page 27: Java- Syntax

OperatorenArithmetische Operatoren:

+ - * / % ++ --

Vergleichsoperatoren:

< <= > >= == !=

Logische Operatoren: ! && ||

Bitweise Operatoren: ~ & |

Page 28: Java- Syntax

Zuweisungsausdrücke

Page 29: Java- Syntax

Ein Zuweisungsausdruck enthält einen

Zuweisungsoperator wie z.B. =

+=++--

Page 30: Java- Syntax

Ein Zuweisungsausdruck ist ein Ausdruck, keine Anweisung, der eine Wirkung (Nebenwirkung) hat, nämlich die Zuweisung.Diese Zuweisung verändert den Wert der Variablen.

Page 31: Java- Syntax

Da ein Zuweisungsausdruck ein Ausdruck ist, hat ein

Zuweisungsausdruck also einen Wert !!!

Page 32: Java- Syntax

Beispiele:

Page 33: Java- Syntax

a = 17

x = 3+2*4

Wert des Ausdrucks : 17Nebenwirkung: Wert der Variablen a ist 17

Wert des Ausdrucks : 11Nebenwirkung: Wert der Variablen x ist 11

Punkt vor Strich.Dies bedeutet, dass dass z.B. die Multiplikation Priorität (=Vorrang) vor der Addition hat

Page 34: Java- Syntax

y = x = 2

Wie wird der Wert diesen Ausdrucks berechnet ?

Page 35: Java- Syntax

y = x = 2

Wert des Ausdrucks : 2Nebenwirkung: Wert der Variablen y ist 2

Abarbeitung:von rechts nach links

Wert des Ausdrucks : 2Nebenwirkung: Wert der Variablen x ist 2

Warum Abarbeitung von rechts nach links?

Weil dies in der Norm so festgelegt ist!Nähers dazu später! (Assoziativität = Auswertung eines Ausdrucks

von rechts oder links)

Page 36: Java- Syntax

a=(x=5)*3

Wert des Ausdrucks : 15Nebenwirkung: Wert der Variablen a ist 15

Wert des Ausdrucks : 5Nebenwirkung: Wert der Variablen x ist 5

Page 37: Java- Syntax

a++

a--

Erhöht den Wert der Variablen a um eins nach der Verwendung in einem Ausdruck.

Verringert den Wert der Variablen a um eins nach der Verwendung in einem Ausdruck.

++aErhöht den Wert der Variablen a um eins vor der

Verwendung in einem Ausdruck.

--aVerringert den Wert der Variablen a um eins vor

der Verwendung in einem Ausdruck.

Page 38: Java- Syntax

Beispiele dazu:Welche Bildschirmausgaben

erzeugt folgendes Programm?

(Zwecks Platzersparnis wird hier wieder System.out.println durch

println abgekürzt.)

Page 39: Java- Syntax

int main(){int i;i=10;

println("Wert nach i++ ist: "+ i++);

println("Wert nach i–- ist: "+ i--);

println("Wert nach ++i ist: "+ ++i);

println("Wert nach --i ist: "+ --i);

}

Wert von i wird erst nach dieser Anweisung erhöht

Wert von i wird erst nach dieser Anweisung verringert

Wert von i wird schon vor dieser Anweisung erhöht

Wert von i wird schon vor dieser Anweisung verringert

10111110

also Bildschirmausgabe:

Page 40: Java- Syntax

println("Wert nach i++ ist: "+ i++);

Durch welche 2 Anweisungen kann man diese Anweisung also simulieren?

println("Wert nach i++ ist: "+ i); i=i+1; println("Wert nach i-- ist: "+ i--);

println("Wert nach i-- ist: "+ i); i=i-1; println("Wert nach ++i ist: "+ ++i); i=i+1; println("Wert nach ++i ist: "+ i); println("Wert nach --i ist: "+ --i); i=i-1; println("Wert nach --i ist: "+ i);

Durch welche 2 Anweisungen kann man diese Anweisung also simulieren?

Durch welche 2 Anweisungen kann man diese Anweisung also simulieren?

Durch welche 2 Anweisungen kann man diese Anweisung also simulieren?

Page 41: Java- Syntax

x+=y

Dies ist eine abkürzende Schreibweise für ...

x=x+yDas gleiche gilt für:

*= -= usw.

Page 42: Java- Syntax

Priorität und Assoziativität bei Operatoren.

Page 43: Java- Syntax

Ein Operator hat höhere Priorität bedeutet, daß die zugehörige Operation zuerst ausgeführt wird, wie z.B:3+5*6(Punkt vor Strich)

= 3 + (5 * 6) = 33

also hat * eine höhere Priorität als +

und nicht: (3 + 5) * 6 = 48

Page 44: Java- Syntax

Wenn zwei Operatoren die gleiche Priorität haben,

bestimmt die Assoziativität, welche Operation zuerst

ausgeführt wird.

Page 45: Java- Syntax

Beispiel:

Page 46: Java- Syntax

* und / haben die gleiche Priorität und die

Assoziativität von Links nach Rechts (kurz: L).

Page 47: Java- Syntax

3 * 6 / 9

Wie wird der Wert dieses Ausdrucks berechnet ?

Page 48: Java- Syntax

3 * 6 / 9

18

2

Deswegen wird zuerst 3*6 (= 18) berechnet und dann 18/9 (=2)

Page 49: Java- Syntax

3 * 6 / 9

0

0

Welches Ergebnis hat der Ausdruck, wenn * und / rechtsassoziativ wären?

da 6 und 9 integer sind

Page 50: Java- Syntax

60 / 10 / 2

Wie wird der Wert dieses Ausdrucks berechnet ?

Page 51: Java- Syntax

60 / 10 / 2

6

3

Deswegen wird zuerst 60/10 (= 6) berechnet und dann 6/2 (=3)

Page 52: Java- Syntax

60 / 10 / 2

5

12

Welches Ergebnis hat der Ausdruck, wenn / rechtsassoziativ wäre?

Page 53: Java- Syntax

Bemerkungen:Ein einstelliger (unärer) Operator arbeitet mit einem Operand, wie zum Beispiel: -xEin zweistelliger (binärer) Operator arbeitet mit 2 Operanden, wie zum Beispiel:x-y, x+y, x*y, x/y, x%y,

Page 54: Java- Syntax

Ein dreistelliger (ternärer) Operator arbeitet mit 3 Operanden. In Java gibt es nur einen ternären Operator (den wir hier nicht besprechen).

Page 55: Java- Syntax

Hier werden folgende Abkürzungen benutzt:A : Assoziativität L : Linksassoziativität R : Rechtsassoziativität

S : Stelligkeit U : unär (einstellig) B : binär (zweistellig) T : ternär (dreistellig)

Page 56: Java- Syntax

Priorität Operatoren Bedeutung Assoz.1 [ ] Array-Index L  ( ) Methodenaufruf L  . Komponentenzugriff L  ++ Postinkrement L  -- Postdekrement L2 ++ Präinkrement R  -- Prädekrement R  + - Vorzeichen (unär) R  ~ bitweises Komplement R  ! logischer Negationsoperator R3 (type) Typ-Umwandlung R  new Erzeugung R4 * / % Multiplikation, Division, Rest L5 + - Addition, Subtraktion L  + Stringverkettung L6 << Linksshift L  >> Vorzeichenbehafteter Rechtsshift L  >>> Vorzeichenloser Rechtsshift L7 < <= kleiner, kleiner gleich L  > >= größer, größer gleich L  instanceof Typüberprüfung eines Objekts L8 == Gleichheit L  != Ungleichheit L9 & bitweises UND L

10 ^ bitweises Exclusiv-ODER L11 | bitweises ODER L12 && & logisches UND L13 | | | logisches ODER L14 ? : Bedingungsoperator R15 = Wertzuweisung R  *= /= %= kombinierter Zuweisungsoperator R  += -= <<=      >>= >>>=      &= ^= |=    

Pri

orit

ät n

imm

t von

obe

n na

ch u

nten

ab

Page 57: Java- Syntax

Welche Operatoren sind rechtsassoziativ, welche linksassoziativ?

Page 58: Java- Syntax

Rechtsassoziativ sind:Zuweisungsoperatoren, der Bedingungsoperator, und unäre Operatoren.

Linksassoziativ sind:alle anderen

Page 59: Java- Syntax

Wie wird der Wert dieses Ausdrucks, der aus boolean-Variablen besteht, berechnet (beachten Sie Priorität und Assoziativität) ?

a==(b && (b!=a)) (a==(b && b))!=a(a==b) && (b!=a)

a==b && b!=aHier ein paar Vorschläge:

Page 60: Java- Syntax

Diese Operatoren haben die gleiche Priorität. Sie ist grösser als die Priorität von &&

Welch(e)r Operator(en) hat (haben) die höchste Priorität ?

&& ist linksassoziativ, deswegen wird dieser Ausdruck zuerst ausgewertet und dann...

Da aus logischen Gründen einer dieser 2 Ausdrücke falsch ist, hat dieser Ausdruck den Wert false

dieser Ausdruck

a==b && b!=a