Ausdrücke der Programmiersprache Java

Ähnliche Dokumente
Algorithmen & Programmierung. Ausdrücke & Operatoren (1)

4. Datentypen. Einleitung Eingebaute Datentypen. Konversion / Type-Cast. Operatoren. Übersicht Die Datentypen char, float und double Standardwerte

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Einstieg in die Informatik mit Java

Welche Informatik-Kenntnisse bringen Sie mit?

Programmiertechnik Operatoren, Kommentare, Ein-/Ausgabe

Primitive Datentypen

Softwareentwicklung Ausdrücke und Typkonversionen

Java Einführung Operatoren Kapitel 2 und 3

Javaprogrammierung mit NetBeans. Variablen, Datentypen, Methoden

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = Euro ergeben.

Programmieren in C / C++ Grundlagen C 2

Operatoren und Ausdrücke

JAVA-Datentypen und deren Wertebereich

Algorithmen und Programmierung II

2 Imperative Sprachkonzepte

Tutoraufgabe 1 (Zweierkomplement): Lösung: Programmierung WS16/17 Lösung - Übung 2

Probeklausur: Programmierung WS04/05

C++ - Operatoren. Eigene Klassen mit neuen Funktionen

Java - Zahlen, Wahrheitswerte und Zeichen. Leibniz Universität IT Services Anja Aue

Objektorientierte Programmierung OOP Programmieren mit Java

JAVA - Methoden - Rekursion

Die Programmiersprache C Eine Einführung

Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015

Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Programmieren I. Martin Schultheiß. Hochschule Darmstadt Wintersemester 2010/2011

Präzedenz von Operatoren

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala

Programmieren I. Kapitel 5. Kontrollfluss

Java Einführung Klassendefinitionen

Java - Zahlen, Wahrheitswerte und Zeichen. Leibniz Universität IT Services Anja Aue

Java I Vorlesung 6 Referenz-Datentypen

5.4 Klassen und Objekte

JAVA - Methoden

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

Einstieg in die Informatik mit Java

Selbsteinstufungstest Vorkurs Programmieren

3. Anweisungen und Kontrollstrukturen

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein

Kapitel 3: Variablen

Javakurs für Anfänger

Einstieg in die Informatik mit Java

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 2

Programmierung WS12/13 Lösung - Übung 1 M. Brockschmidt, F. Emmes, C. Otto, T. Ströder

L6. Operatoren und Ausdrücke

1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays)

2. Programmierung in C

Klassen mit Instanzmethoden

Ein erstes Java-Programm

Vorlesung Programmieren

Repetitorium Informatik (Java)

Einführung in die Informatik für Hörer aller Fakultäten II. Andreas Podelski Stephan Diehl Uwe Waldmann

Einstieg in die Informatik mit Java

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Programmierkurs Java

Einführung in die Programmierung 1

Modul 122 VBA Scribt.docx

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen

Programmierung mit C Zeiger

Einführung in den Einsatz von Objekt-Orientierung mit C++ I

Vererbung. Martin Wirsing. Ziele. Vererbung

Hello World. Javakurs 2014, 1. Vorlesung. Sebastian Schuck. basierend auf der Vorlage von Arne Kappen. wiki.freitagsrunde.org. 3.

Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8

Probeklausur: Programmierung WS04/05

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

RO-Tutorien 3 / 6 / 12

Der Datentyp String. Stringvariable und -vergleiche

Java Kurs für Anfänger Einheit 2 Datentypen und Operationen

String s1, s2; Eine Zuweisung geschieht am einfachsten direkt durch Angabe des Strings eingeschlossen in doppelte Hochkommata:

1 Polymorphie (Vielgestaltigkeit)

C-Vorrangregeln. Version Web:

Klassen und Objekte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg

Einstieg in die Informatik mit Java

Themen. Statische Methoden inline Methoden const Methoden this Zeiger Destruktor Kopierkonstruktor Überladen von Operatoren

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 16

1.2 Attribute und Methoden Aufbau einer Java-Klasse:

Objektorientierte Programmierung

Objektorientierte Programmierung

Erster Kontakt mit Java und Pseudocode

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik

Grundlagen der Programmierung Prof. H. Mössenböck. 10. Klassen

Primitive Datentypen und Felder (Arrays)

Einführung in die Java- Programmierung

OO Programmierung in Java

2.5 Primitive Datentypen

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Blöcke. Beispiel: Variablen in Blöcken

Grundlagen der Programmierung Prof. H. Mössenböck. 6. Methoden

PROGRAMMIERUNG IN JAVA

Datenbankanwendungsprogrammierung Crashkurs Java

Einstieg in die Informatik mit Java

Java Cheatsheet. Mehrzeiliger Kommentar (beginnt mit /* und endet mit */)

Transkript:

Ausdrücke der Programmiersprache Java Hamburg 1

Ablauf des Vortrags 01. Eigenschaften von Ausdrücken 02. Arithmetische Operatoren 03. Relationale Operatoren 04. Logische Operatoren 05. Bitweise Operatoren 06. Zuweisungsoperator 07. Sonstige Operatoren 08. Operatoren für f r Objekte 09. Welche Operatoren es nicht gibt 10. Operator Vorrangregeln 11. Zusammenfassung 12. Quelle Hamburg 2

Eigenschaften von Ausdrücken kleinste ausführbare Einheit eines Programms mindestens ein Operator und ein oder mehrere Operanden Typ des Rückgabewerts R bestimmt sich aus den Typen der Operanden und der Art der Operation Anhand der Typen der Operanden entscheidet man zwischen numerische, relationale, logische, bitweise, Zuweisungs- und sonstige Operatoren Hamburg 3

Eigenschaften von Ausdrücken Stelligkeit eines Operators aus der Anzahl der Argumente Zweistellige Operatoren (+-*/ %.) Einstellige Operatoren (Vorzeichen, nicht) Dreistelliger Operator (?) Hamburg 4

Eigenschaften von Ausdrücken Bindungsregeln (Punkt vor Strich ) Auswertungsfolge bei gleicher Bindungskraft anhand der Assoziativität Bsp. a-b+c =(a-b)+c Bsp. i=2, (i=3)*i=9 Eigentliche Funktion: Rückgabewert R produzieren Hamburg 5

Eigenschaften von Ausdrücken Konzept Definite Assignment jede Variable muss vor ihrer ersten Anwendung initialisiert sein Sichergestellt durch den Compiler Hamburg 6

Eigenschaften von Ausdrücken 001 public static void Test(int i) 002 { 003 int k; 004 if (i >= 2) { 005 k = 5; 006 } 007 System.out.println(k); 008 } Hamburg 7

Eigenschaften von Ausdrücken 001 public static void Test(int i) 002 { 003 int k; 004 if (i <2) { 005 k = 5; 006 } 007 if (i >=2) { 008 K=6 009 } 010 System.out.println(k); 011 } Hamburg 8

Arithmetische Operatoren Addition, Subtraktion, Multiplikation, Division, Restwertoperator Prä- Postinkrementoperator (a++,++a( a++,++a) Prä- Postdekrementoperator (a--( --,--a) Ergebnistyp entspricht dem größ ößeren Datentyp Hamburg 9

Operator Bezeichnung +- Vorz,Sum,Diff */ Prod,Quotient % Restwert ++ Präinkrement Bedeutung a++ ergibt a+1, erhöht ht a um 1 ++ Postinkrement ++a ergibt a, erhöht ht a um 1 -- Prädekrement --a a ergibt a-1, a verringert um 1 -- Postdekrement a-- ergibt a, verringert um 1 Hamburg 10

Relationale Operatoren Vergleich mit logischem RückgabewertR Vergleich auch zwischen gemischten numerischen Datentypen ==,!=, <, >, <=, >= Prüfung bei Objekttypen auf Gleichheit und Ungleichheit Hamburg 11

Logische Operatoren Verknüpfung und Weiterverarbeitung boolscher Werte und, oder, Exklusiv oder, nicht und/oder auch als Short-Circuit Circuit-Evaluation (weiter rechts stehender Teilausdruck wird nur ausgewertet, wenn der vorhergende nicht bereits ein Ergebnis erzwingt) Hamburg 12

Logische Operatoren Operator Bezeichnung Bedeutung! NICHT & UND entspricht Ansi C && ODER entspricht Ansi C ^ Exklusiv Oder Hamburg 13

Logische Operatoren Operator && Bezeichnung UND mit Short- Circuit- Evaluation Bedeutung a && b ergibt true,, wenn sowohl a als auch b wahr sind. Ist a bereits falsch, so wird false zurückgegeben und b nicht mehr ausgewertet. Hamburg 14

Logische Operatoren Operator Bezeichnung Bedeutung ODER mit Short- Circuit- Evaluation a b ergibt true,, wenn mindestens einer der beiden Ausdrücke a oder b wahr ist. Ist bereits a wahr, so wird true zurückgegeben und b nicht mehr ausgewertet. Hamburg 15

Bitweise Operatoren Zugriff auf die Bits numerischer Operanden Operatoren wie Ansi C (~,,&,^,>>,<<) zusätzlich einen Rechtsschiebeoperator >>>, der das höchstwertige Bit auf Null setzt Hamburg 16

Bitweise Operatoren >> Rechtsschieben mit Vorzeichen a >> b ergibt den Wert, der entsteht, wenn alle Bits von a um b Positionen nach rechts geschoben werden. Falls das höchstwertige Bit gesetzt ist (a also negativ ist), wird auch das höchstwertige Bit des Resultats gesetzt. Hamburg 17

Bitweise Operatoren >>> Rechtsschieben ohne Vorzeichen a >>> b ergibt den Wert, der entsteht, wenn alle Bits von a um b Positionen nach rechts geschoben werden. Dabei wird das höchstwertige Bit des Resultats immer auf 0 gesetzt. Hamburg 18

Zuweisungsoperatoren Zuweisungsungsoperatoren wie Ansi C =,+=,-=,*=,/=,%=,&=, =,^=,<<=, =,*=,/=,%=,&=, =,^=,<<=, >>= Ausnahme: Rechtsschiebezuweisung mit Nullexpansion >>>= a>>>=b weist a den Wert von a>>>=b zu, Rückgabewert R a>>>=b Hamburg 19

Zuweisungsoperatoren Verwechslung von = und == in Java nahezu ausgeschlossen, da Kontrollausdruck vom Typ BOOLEAN sein muss. Hamburg 20

Fragezeichenoperator? Einziger dreiwertige Operator Erwartet einen logischen Ausdruck und zwei weitere Ausdrücke a? b : c Ergebnis ist b falls a wahr ist und c falls a falsch ist Hamburg 21

Type-Cast Cast-Operator (type)a a wird in einem Ausdruck vom Type type gewandelt Achtung: a kann nach der Typumwandlung nur noch auf der rechten Seite eines Zuweisungsoperators stehen. Hamburg 22

Type-Cast Cast-Operator Anwendung: Zuweisung von größ ößeren an kleinere Datentypen oder der Umwandlung von Objekttypen. Hamburg 23

Operatoren für f r Objekte Es gibt in Java Ausdrücke und Operatoren, die mit Objekten arbeiten oder Objekte produzieren. Hamburg 24

String Verkettungsoperator Operator +-+ zur Verkettung von Strings Mindestens ein Operand muss ein String sein, der zweite wird dann konvertiert. Ergebnis ist ein String Hamburg 25

String Verkettungsoperator public class Listing{ public static void main(string[] args) { int a = 5; double x = 3.14; System.out.println("a = " + a); System.out.println("x = " + x); } } Hamburg 26

String Verkettungsoperator Die Ausgabe des Programms lautet: a = 5 x = 3.14 Hamburg 27

String Verkettungsoperator Achtung bei Stringverkettung und Addition in einem Ausdruck Hamburg 28

String Verkettungsoperator public class Listing{ public static void main(string[] args) { } // Die +-Operatoren + werden von innen nach //außen und von links nach rechts ausgewertet System.out.println("3 + 4 = " + 3 + 4); } Hamburg 29

String Verkettungsoperator Ausgabe des Programms: 3+4=34 und nicht 3+4=7 Lösung: Teilausdruck klammern System.out.println("3 + 4 = " + (3 + 4)); Hamburg 30

Referenzgleichheit und Ungleichheit == und! = angewandt auf Objekte um zu überprüfen, ob die Referenzen auf die selben Objekte zeigen und nicht, ob Objekte inhaltlich übereinstimmen. Hamburg 31

Referenzgleichheit und Ungleichheit public class { public static void main(string[] args) { } } String a = new String("hallo"); "); String b = new String("hallo"); "); System.out.println("a == b liefert " + (a ==b)); System.out.println("a!= b liefert " + (a!= b)); Hamburg 32

Referenzgleichheit und Ungleichheit Ausgabe des Programms: a==b liefert false a!=b liefert true Hamburg 33

Referenzgleichheit und Ungleichheit Vergleicht man Strings, die zur Compile- Zeit angelegt sind, werden diese nur bei inhaltlicher Gleichheit als Instanzen der selben Klasse angesehen Auf inhaltliche Gleichheit wird mit der Methode equals überprüft Hamburg 34

Referenzgleichheit und Ungleichheit public class Listing{ public static void main(string[] args) { String a = new String("hallo"); "); String b = new String("hallo"); "); System.out.println("a.equals(b) ) liefert "a.equals(b)); } } Hamburg 35

Der instanceof- Operator Der Ausdruck a instanceof b liefert genau dann true,, wenn a und b Referenztypen sind und a eine Instanz der Klasse b oder einer ihrer Unterklassen ist. Hamburg 36

Der new-operator zum Erzeugen von Objekten und Arrays Rückgabewerte sind die Objekte und Arrays selbst Hamburg 37

Member-Zugriff Punkt-Operator ermöglicht den Zugriff auf Klassen- oder Instanzvariablen Beispiel a.b a ist der Name einer Klasse bzw. die Instanz einer Klasse, b der Name einer Klasse oder einer Instanzvariablen Rückgabewert ist der Inhalt der Variablen Typ des Ausdrucks entspricht dem der Variablen Hamburg 38

Methodenaufruf Es gibt in Java keine Funktionen, nur Methoden Der Typ des Ausdrucks entspricht dem vereinbarten Rückgabewert R der Methode Rückgabewert ist der Wert der return Anweisung Hamburg 39

Zugriff auf Array-Elemente Wie in Ansi C über eckige Klammern a[b] a ist der Name eines Arrays oder ein Ausdruck, der zu einem Array ausgewertet wird, und b ein Ausdruck, der zu einem int evaluiert werden kann Typ des Ausdrucks entspricht dem Basistypen des Arrays Rückgabewert ist der Inhalt des Arrayelements Hamburg 40

Welche Operatoren es nicht gibt Pointer Operatoren *,& sizeof Kommaoperator nur als syntaktischer Bestandteil in for-schleifen Schleifen Hamburg 41

Operator-Vorrangregeln Tabelle Vorrangregeln Java Buch java-krueger krueger\html\k100038.html Achtung: bitweise Operatoren binden schwächer cher als relationale und sind auf der gleichen Stufe mit den logischen Operatoren Hamburg 42

Operator-Vorrangregeln public class Listing{ public static void main(string[] args) ) { int i = 55; int j = 97; if (i & 15 < j & 15) { System.out.println("LowByte(55) < LowByte(97)"); } else{ System.out.println("LowByte(55) >= LowByte(97)"); } } } Fehler»Incompatible type for &. Can't convert int to boolean«: Hamburg 43

Operator-Vorrangregeln Lösung: Klammern setzen! public class Listing{ public static void main(string[] args) ) { int i = 55; int j = 97; if ((i & 15) < (j & 15)) { System.out.println("LowByte(55) < LowByte(97)"); } else{ System.out.println("LowByte(55) >= LowByte(97)"); } } } Hamburg 44

Operator-Vorrangregeln Die Ausgabe des Programms: LowByte(55) >= LowByte(97) Hamburg 45

Zusammenfassung Linksassoziativität Datenflussanalyse des Compilers implizite Konvertierung &/ Java entspricht &&/ in Ansi C Short-Circuit Circuit-Evaluation (&&/ ) >>> Rechtsschieben ohne VZ = und == nicht verwechselbar nach Type-Cast Cast-Operation => rechte Seite Verkettung von Strings mit +-+ Zugehörigkeit eines Objektes instanceof-operator Erzeugen von Arrays oder Objekten new-operator keine Funktionen, keine Pointer, kein sizeof,, kein Komma-Operator Hamburg 46

Die Quellen Handbuch der Java Programmierung 5.Auflage von Guido Krueger Hamburg 47

Vielen Dank für f r Eure Aufmerksamkeit Hamburg 48