OO Programmierung in Java



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

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

Java Einführung Operatoren Kapitel 2 und 3

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Diana Lange. Generative Gestaltung Operatoren

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

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

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

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

Ein erstes Java-Programm

Programmiertechnik Operatoren, Kommentare, Ein-/Ausgabe

Programmiervorkurs. Organisation: Steffen Gebert, Alexander Wolff. Tutoren: Jürgen Zöller, Jonathan Stoll. Wintersemester 2012/2013

Einführung in die C++ Programmierung für Ingenieure

Grundlagen der Informatik

Primitive Datentypen

Datentypen. Agenda für heute, 4. März, Pascal ist eine streng typisierte Programmiersprache

Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke

Vorkurs Informatik WiSe 15/16

Zahlensysteme. Digitale Rechner speichern Daten im Dualsystem 435 dez = binär

Vorkurs Informatik WiSe 16/17

Kapitel 4A: Einschub - Binärcodierung elementarer Datentypen. Einschub: Teile aus Kapitel 2 in Küchlin/Weber: Einführung in die Informatik

Numerische Datentypen. Simon Weidmann

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

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Vorkurs Informatik WiSe 17/18

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Grundlagen der Informatik Übungen 1.Termin

Zahlensysteme: Oktal- und Hexadezimalsystem

Die Programmiersprache C

Computeranwendung und Programmierung (CuP)

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

Programmieren. 10. Tutorium 4./ 5. Übungsblatt Referenzen

Java Einführung Programmcode

1. Der Einstieg in Java. Was heißt Programmieren?

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

Daten verarbeiten. Binärzahlen

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

Technische Informatik - Eine Einführung

Übungsblatt 3: Algorithmen in Java & Grammatiken

Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter

Programmierung in C. Grundlagen. Stefan Kallerhoff

Java-Programmierkurs SS 2003 Margarita Esponda 1

2 Einfache Rechnungen

Programmieren in C. Felder, Schleifen und Fließkommaarithmetik. Prof. Dr. Nikolaus Wulff

Einführung in die Java- Programmierung

Dr. Monika Meiler. Inhalt

Java Kurs für Anfänger Einheit 5 Methoden

Programmieren in C. C Syntax Datentypen, Operatoren und Kontrollstrukturen. Prof. Dr. Nikolaus Wulff

Vorlesung Informatik II

Allgemeines. Verschiedene Sprachkonzepte C-Sprachfamilie C-ähnliche Programmiersprachen Allgemeines zu C. #include <stdio.h>

Modul 122 VBA Scribt.docx

Java I Vorlesung Imperatives Programmieren

1. Das dekadische Ziffernsystem (Dezimalsystem) Eine ganze Zahl z kann man als Summe von Potenzen zur Basis 10 darstellen:

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Zahlensysteme und Datendarstellung

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Ein polyadisches Zahlensystem mit der Basis B ist ein Zahlensystem, in dem eine Zahl x nach Potenzen von B zerlegt wird.

Einführung in die Informatik I

5 DATEN Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16. Vorbereitende Aufgaben. Präsenzaufgaben

Vorkurs C++ Programmierung

Programmierkurs Java

2. Negative Dualzahlen darstellen

Einführung in Javadoc

Grundlagen der Informatik (BSc) Übung Nr. 5

Variablen. CoMa-Übung VIII TU Berlin. CoMa-Übung VIII (TU Berlin) Variablen / 15

Binärdarstellung von Fliesskommazahlen

Tutorium Rechnerorganisation

Java 7. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Dezember 2011 JAV7

1. Formulieren Sie den Algorithmus <Bedienung eines Getränkeautomaten> nach den oben genannten Kriterien.

Binäre Gleitkommazahlen

Binär- und Hexadezimal-Zahl Arithmetik.

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

Übung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse

1. LPC - Lehmanns Programmier Contest - Lehmanns Logo

Informationssysteme Gleitkommazahlen nach dem IEEE-Standard 754. Berechnung von Gleitkommazahlen aus Dezimalzahlen. HSLU T&A Informatik HS10

Daten, Informationen, Kodierung. Binärkodierung

Zahlensysteme Seite -1- Zahlensysteme

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Programmieren I. Prinzipieller Ablauf. Eigenschaften von JAVA. Source-Code Javac Bytecode. Java Virtual Machine (Java, Browser, Appletviewer)

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

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Einführung in die Programmierung

Einführung in die Programmierung

IT-Basics 2. DI Gerhard Fließ

Sin-Funktion vgl. Cos-Funktion

Grundlagen der Informatik Übungen 1. Termin Zahlensysteme

Java: Vererbung. Teil 3: super()

1. Der Einstieg in Java

Java-Vorkurs Wintersemester 15/16

Algorithmische Kernsprache. Zuweisung, einfache und bedingte Anweisung, Blöcke, Schleifen, return, debugging.

2. Programmierung in C

Einführung in die Programmierung

Noch für heute: primitive Datentypen in JAVA. Primitive Datentypen. Pseudocode. Dezimal-, Binär- und Hexadezimalsystem. der logische Typ boolean

Übungen zur Vorlesung Einführung in die Informatik Wintersemester 2010/11

Pakete dienen dazu, die Software eines Projektes in größere inhaltlich zusammengehörige Bereiche mit eigenem Namen einzuteilen (siehe Java API).

BITte ein BIT. Vom Bit zum Binärsystem. A Bit Of Magic. 1. Welche Werte kann ein Bit annehmen? 2. Wie viele Zustände können Sie mit 2 Bit darstellen?

PHP 5.4 ISBN Stephan Heller, Andreas Dittfurth 1. Ausgabe, September Grundlagen zur Erstellung dynamischer Webseiten GPHP54

Kontrollstrukturen, Pseudocode und Modulo-Rechnung

Transkript:

OO Programmierung in Java Einführung WS 212/213 Prof. Dr. Margarita Esponda M. Esponda-Argüero 1

Homepage Homepage http://www.esponda.de/ws_12_13/jbk Vorlesungsfolien Literaturliste Übungen Zusätzliches Material esponda@inf.fu-berlin.de Sprechstunde: Fr. 8-1 und 12:3-13:3 Uhr Raum 161 OOP mit Java Prof. M. Esponda M. Esponda-Argüero 2

Java ist plattformunabhängig Quellprogramm public class public read (a)[. b = readnum(); if (a<b) then a = a*a; else a = a+b; Java-Compiler javac Bytecode iload #1 C iload #2 B imult #1 #2 #3 iload #4 A iadd #3 #4 #1 istore #1 C iload #4 A iadd #3 #4 #1 Interpreter JVM JVM JVM JVM Der Interpreter (JVM) wird direkt von der Hardware ausgeführt. OOP mit Java Prof. M. Esponda 3

Übersetzen/Ausführen MyFirstProgram.java (Quellprogramm) javac MyFirstProgram.class (Bytecode) libjava.so (Bibliothek) java VM Übersetzen: Ausführen: javac MyFirstProgram.java java MyFirstProgram OOP mit Java Prof. M. Esponda 4

Java-Programme - Java-Programme bestehen aus einer oder mehreren Klassen - Eine Klasse ist in der Regel in einer eigenen, gleichnamigen Datei mit der Endung.java definiert, z. B. MyFirstProgram.java - Die Programmausführung beginnt immer mit der Methode main einer der Klassen. OOP mit Java Prof. M. Esponda 5

Beispiel: Java-Programm /* Ein einfaches aber vollständiges Java-Programm */ public class MyFirstProgram { public static void main ( String[] args ) { } System.out.println( "Es läuft! " ); } // end of class MyFirstProgram Jedes Java-Programm muss mindestens eine Methode namens main haben. Hier fängt die Programmausführung an. OOP mit Java Prof. M. Esponda 6

Kommentare in Java Zeilenend-Kommentare // von hier aus bis zum Ende der Zeile wird dieser Text ignoriert Block-Kommentare /* alle diese Zeilen hier werden von dem javac völlig ignoriert... */ Javadoc-Kommentare /** dieser Text wird von dem javadoc-programm verwendet, um automatische Dokumentation in html-format zu erzeugen */ OOP mit Java Prof. M. Esponda 7

Vom Quellprogramm bis zur Ausführung Texteditor (Eclipse) Zuerst schreibe ich mein Programm in Java Speichern Übersetzer javac MeinProg.java Speichern MeinProg.java MeinProg.class Ausführen Interpreter java MeinProg JVM Hardware OOP mit Java Prof. M. Esponda 8

JDK (Java Development Kit) javac java appletviewer javadoc jar jdb Java-Compiler Java-Interpreter Interpreter für "Applets" Dokumentationsgenerator Archivierungsprogramm Java-Debugger OOP mit Java Prof. M. Esponda 9

Imperative Grundbestandteile von Java Quelldatei Imperative Programmierung Klassendefinition Click to edit Master Methode A text styles Imperative Programmierung Objektorientierte Verpackung Der imperative Bestandteil eines Java-Programms befindet sich innerhalb der Methoden. Methode B Imperative Programmierung. M. Esponda-Argüero 1

Imperative Grundbestandteile von Java Wie programmieren wir den Inhalt einer Methode? 1. Primitive Datentypen in Java 2. Deklaration von Variablen (OOP) 3. Ausdrücke in Java 4. Die vielen Operatoren von Java 5. Einfache Anweisungen 6. Anweisungen zur Ablaufsteuerung M. Esponda-Argüero 11

Was ist eine Variable? Variablen sind Stellen im Speicher, in denen Werte abgelegt werden können. Typ Variablen haben: Namen Wert Im Programm sichtbar Adresse Variablen müssen vor der erstmaligen Benutzung deklariert werden. Die Änderung des Wertes einer Variablen geschieht durch Wertzuweisung ( = ). Stelle im Speicher, wo die Variable sich während der Ausführung des Programms befindet M. Esponda-Argüero 12

Variablendeklarationen innerhalb von Methoden Typ Name Wert int breite ; int hoehe = 1; int flaeche = ; Semikolon In Java sagt der Datentyp vor allem, wie viel Speicherplatz benötigt wird, um die entsprechende Variable speichern zu können. Symbolischer Name einer Speicheradresse Der Wert ist der Inhalt der Speicheradresse unmittelbar nach dieser Deklaration. Das kann sich aber später ändern. M. Esponda-Argüero 13

Programmbeispiel mit Variablendeklarationen public class SomeVarDeclarations { } public static void main(string[] args) { } // end of class // Variablen double y = 1.5; int a, b, sum, mult; String message; // Wertzuweisungen a = 1; b = 3; sum = a+b; mult = a*b; message = "Berechnungen:"; // Ausgabe im Eingabeaufforderung-Fenster System.out.println( message ); System.out.println( mult ); System.out.println( " Die Summe ist gleich " + sum ); // end of main 14

public static void main ( String[] args ) { double y = 1.5; int a, b, sum, mult; a = 1; b = 3; sum = a+b; mult = a*b; Speicher y 1.5 a 1 b 3 sum 4 mult 3 } System.out.println( "Es läuft! " ); System.out.println( y ); System.out.println( "a = " +a); System.out.println( sum * mult) ; Es läuft! 1.5 a = 1 12 M. Esponda-Argüero 15

Eine Speicheradresse mit 32 Bits kann sehr unterschiedlich interpretiert werden. 1 1 1 1 Pixel A B Zeichen Ganze Zahl Gleitkomma Zahl IP-Adresse Assembler-Befehl add $65 $ &66 425996.65..66 5.96939973596874e-39 ALP I: Margarita Esponda, 5. Vorlesung, 29.1.212 16

Binärsystem Zehnersystem (mit Zahlen ohne Vorzeichen) Das Binärsystem benötigt nur 2 verschiedene Symbole, um alle Zahlen zu kodieren. ( oder 1) Binärdarstellung Dezimaldarstellung 1 1 1 2 5 2 4 2 3 2 2 2 1 2 2 = 1. 2 5 +. 2 4 + 1. 2 3 +. 2 2 + 1. 2 1 +. 2 = 32 + 8 + 2 = 42 1 ALP I: Margarita Esponda, 5. Vorlesung, 29.1.212 17

Binärkodierung Zahlen in einem Stellenwertsystem z n z n 1 z n 1...z 2 z 1 z = n z i b i i= In dem Binärsystem sind die Ziffern z i { ;1} und b = 2 Im Dezimalsystem sind die Ziffern z i { ;1;2;3;4;5;6;7;8;9 } und b = 1 ALP I: Margarita Esponda, 5. Vorlesung, 29.1.212 18

Binärkodierung Zehnersystem Binärsystem (Zahlen ohne Vorzeichen) 42 1 = 111 2 Rest 42 21 1 1 5 2 1 1 1 ALP I: Margarita Esponda, 5. Vorlesung, 29.1.212 19

Binärkodierung Addition mit Binärzahlen (1) Übertrag (1) (1) (1) (1) 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ALP I: Margarita Esponda, 5. Vorlesung, 29.1.212 2

Binärkodierung Multiplikation mit Binärzahlen X 1 1 1 1 1 11 X 5 1 1 1 55 1 1 1 1 1 1 1 1 = 32 + 16 + 4 + 2 + 1 = 55 ALP I: Margarita Esponda, 5. Vorlesung, 29.1.212 21

Binärkodierung Positive und Negative Zahlen Mit einem 32-Bit-Wort können 2 32 verschiedene Zahlen dargestellt werden. Das erlaubt einen Wertebereich von bis 2 32-1, wenn wir nur positive Zahlen damit darstellen wollen. 2 = 1 1 2 = 1 1 1 2 = 2 1....... 1111 1111 1111 1111 1111 1111 1111 111 2 = 4 294 967 294 1 1111 1111 1111 1111 1111 1111 1111 1111 2 = 4 294 967 295 1 Wie kann dieser Wertebereich aufgeteilt werden, so dass positive und negative Zahlen dargestellt werden können? ALP I: Margarita Esponda, 5. Vorlesung, 29.1.212 22

Binärkodierung Positive und Negative Zahlen 1. Lösung Balancierte Teilung: Vorzeichen = positive 1 = negative Probleme: = + 1 = - Zwei verschiedene Kodierungen für Null! Sehr schlecht für eine Hardware-Implementierung! ALP I: Margarita Esponda, 5. Vorlesung, 29.1.212 23

Binärkodierung Positive und Negative Zahlen 2. Lösung Unbalancierte Teilung: = 1 = 1 1 = 2..... 111 1111 1111 1111 1111 1111 1111 111 = 2 147 483 646 111 1111 1111 1111 1111 1111 1111 1111 = 2 147 483 647 1 = -2 147 483 648 1 1 = -2 147 483 647 1 1 = -2 147 483 646..... Es gibt eine 1111 1111 1111 1111 1111 1111 1111 111 = -3 negative 1111 1111 1111 1111 1111 1111 1111 111 = -2 Zahl mehr! 1111 1111 1111 1111 1111 1111 1111 1111 = -1 ALP I: Margarita Esponda, 5. Vorlesung, 29.1.212 24

Binärkodierung Zweierkomplementdarstellung 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Übertrag 1 = 1 1111 1111 1111 1111 1111 1111 1111 1111 = -1 1 = 32 Bits Arithmetischer Überlauf (Overflow) Positive und negative Zahlen können einfach addiert werden und das Ergebnis ist richtig! ALP I: Margarita Esponda, 5. Vorlesung, 29.1.212 25

Binärkodierung Zweierkomplementdarstellung Wie kann ich aus n die Zahl n kodieren? Beispiel: 111 2 = 7 1 Schritt 1: Alle Bits werden umgekippt 1111 1111 1111 1111 1111 1111 1111 1 2 Schritt 2: Eine 1 wird addiert 1111 1111 1111 1111 1111 1111 1111 11 2 = -7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 111 2 = 7 1 1111 1111 1111 1111 1111 1111 1111 11 2 = -7 1 overflow 1 ALP I: Margarita Esponda, 5. Vorlesung, 29.1.212 26

Binärkodierung Zweierkomplementdarstellung mit nur 4 Bits -3-2 111 111-1 1111 1 1 1 2-4 11 11 3-5 111 1 4-6 11 11-7 1-8 111 11 11 6 7 5 ALP I: Margarita Esponda, 5. Vorlesung, 29.1.212 27

Binärkodierung Zweierkomplementdarstellung -1 1 1 1 1111 + 1 11111111 + 1 1111111111111111 + 1 1111111111111111111111111111111 2 147 483 647 + 1 11-2 147 483 648 ALP I: Margarita Esponda, 5. Vorlesung, 29.1.212 28

Binärkodierung Subtraktion 8 Bits 77 1 7 1 1 1 1 1 1 1 1 (1) (1) (1) (1) 77 1 1 1 1 1 1 1 1 1 1 Zweierkomplement - 7 1 (1) 1 1 1 7 1 ALP I: Margarita Esponda, 5. Vorlesung, 29.1.212 29

Binärkodierung 1 1 11 1 11 11 111 1 11 11 111 11 111 111 1111 1 2 3 4 5 6 7 8 9 A B C D E F Hexadezimal-Darstellung 11 1111 1111 11 11 1 1 2 Beispiel: Hexadezimal: Dezimal: 9 F F 3 A1 8 16 Farben FF AD HTML 255,, 173 Java ALP I: Margarita Esponda, 5. Vorlesung, 29.1.212 3

Binärkodierung Basis = 16 Hexadezimal-Kodierung Ziffern = {, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F } 1 2 3 4 5 6 7 8 9 1 11 12 13 14 15 Beispiel: 1 A 4 F B 16 = Hexadezimal Dezimal 1 16 4 + A 16 3 + 4 16 2 + F 16 1 + B 16 4 16 3 16 2 16 1 16 = 17771 1 Dezimal 17771 6735 42 26 1 Rest 11 15 4 1 1 Hexadezimal 1 A 4 F B 16 ALP I: Margarita Esponda, 5. Vorlesung, 29.1.212 31

Binärkodierung 1 1 11 1 11 11 111 1 2 3 4 5 6 7 Oktaldarstellung 1 1 111 111 11 11 11 11 2 1 1 7 7 6 3 5 3 8 Oktal Hexadezimal 1 1 7 7 6 3 5 3 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 9 F F 3 A 1 8 16 ALP I: Margarita Esponda, 5. Vorlesung, 29.1.212 32

Primitive Datentypen in Java Java hat 8 elementare Datentypen und legt für jeden primitiven Datentyp eine feste Speichergröße und damit einen festen Zahlenbereich fest. Typ Bits Zahlenbereich Standardwert byte 8-128... 127 short 16-32.768.. 32.767 int 32-2 31... 2 31-1 long 64-2 63... 2 63-1 float 32 ca. 3.42*1 38.. 1.42*1-45. double 64 ca. 1.798*1 38.. 4.94*1-324. boolean 1 true, false false char 16 Unicode \u M. Esponda-Argüero 33

Literale (explizite Wertangabe) Konstanten sind explizit angegebene Objekte im Programm. Sie besitzen einen Typ, der sich aus der Schreibweise der Konstanten ergibt. Ganzzahlige Konstanten: 345 1 Gleitpunktkonstanten: 3.45..5e+2.5E-3 Zeichenkonstanten: Sichtbar 'A' 'a' '1' '+' Unsichtbar '\n' '\a' '\b' '\t' Zeichenkettenkonstanten: "Zeichenkette" M. Esponda-Argüero 34

beginnen immer mit Namen von Variablen - einem Buchstaben - oder '_' area _green a2345 _1 - keine Sonderzeichen dazwischen - kein reserviertes Java-Wort wie +, =, & usw. int double main Konventionen Variablennamen werden klein geschrieben mit großen Buchstaben dazwischen oder "underlines" dazwischen umfang pencolor pen_color M. Esponda-Argüero 35

Einfache Anweisungen in Java Die einfachsten Befehle in jeder Programmiersprache sind die Zuweisungen. Zuweisung in Java Variablenname = Ausdruck ; Zuweisungsoperator Beispiele: b = 3 * b ; c = a / b ; Semikolon M. Esponda-Argüero 36

Anweisungen zur Ablaufsteuerung Einzelne Anweisungen (statements) werden mit einem Semikolon abgeschlossen: a = b * c; Anweisungen werden durch geschweifte Klammern zu Blöcken zusammengefasst: { } a = b * r; x = a + z/a; Die Abarbeitungsreihenfolge der Anweisungen verläuft normalerweise von oben nach unten und von links nach rechts. M. Esponda-Argüero 37

Variablen in Java Variablen können überall deklariert werden, aber nicht außerhalb von Klassendefinitionen. Ihr Gültigkeitsbereich erstreckt sich von der Stelle ihrer Deklaration bis zum Ende des Blocks, in dem sie deklariert wurden. { Variabledeklaration Gültigkeitsbereich bis Ende des Blockes } M. Esponda-Argüero 38

unär Arithmetische Operatoren Operator Zeichen Rtg. Beispiel Priorität negatives Vorzeichen - -x 13 binär Operator Zeichen Rtg. Beispiel Priorität Multiplikation * a * b 12 Division / 3 / 5 12 Rest % 6 % 5 12 Addition + 1 + 3 11 Subtraktion - 1-3 11 M. Esponda-Argüero 39

Ausdrücke Wert Typ Einfache Befehle in Java 7 / 2 3 int... 1 / 2 1 / 2..5 4 % 2 7 % 2 1 1 % 2 1 int double int int int // Deklaration von Variablen int a, b, c ; // Zuweisungen a = 7 % 2 ; b = a * a ; c = a / b + 1 ; M. Esponda-Argüero 4

Inkrement- und Dekrement-Operatoren Operator Benutzung Beschreibung Priorität ++ ++ op Inkrementiert op um 1 13 ++ op ++ Inkrementiert op um 1 13 -- -- op dekrememtiert op um 1 13 -- op -- dekrememtiert op um 1 13 M. Esponda-Argüero 41

Beispiele: int i = 1, j = ; j = ++ i ; j = i ++ ; j: j: 11 i: i: 11 11 12 int a = 5; int b = 4; int c = ; int d = ; c = --a + b++; c = c + ++a; d = c++ - ++a + b--; Was ist der Inhalt der Variablen a: 4 b: 5 c: 8 a: 5 b: 5 c: 13 a? b? c? und d? 6 4 14 12 M. Esponda-Argüero 42

Vergleichsoperatoren binär Kleiner < op1 < op2 9 Größer > op1 > op2 9 Kleiner oder gleich <= op1 <= op2 9 Größer oder gleich >= op1 >= op2 9 Gleichheit == op1 == op2 8 Ungleichheit!= op1!= op2 8 M. Esponda-Argüero 43

public class SimpleStatements { public static void main( String args[]) { boolean w1, w2, w3; int a = 3; int b = 3; } } w1 = a<b; System.out.println("w1 = " + w1 ); w2 = a<=b; System.out.println("w2 = " + w2); w3 = a!=b; System.out.println("w3 = " + w3); w1 = false w2 = true w3 = false M. Esponda-Argüero 44

unär Logische Operatoren Operator Zeichen Rtg. Beispiel Priorität logische Negation!!a 13 binär UND && a && b 4 ODER a b 3 ternär bedingter Ausdruck? :!true? 4 : 9 2 B A 1 A 2 M. Esponda-Argüero 45

Beispiele: boolean w1 = false; boolean w2, w3; w2 =!w1; w1 = 6%3 == ; w2 = w1 w2; w1 = (6<7) && (7<6); w3 = w1!= w2; w2 true w1 true w2 true w1 false w3 true Die Vergleichsoperatoren können nur mit den elementaren Datentypen von Java operieren und produzieren immer einen Wahrheitswert. Die logischen Operatoren operieren nur mit Wahrheitswerten. M. Esponda-Argüero 46

Beispiele: 6 < 7 == 3 > jahr%4 == && (jahr%1!= jahr%4 == ) Bedingung Schaltjahr a<? -a : a Ausdruck 1 Ausdruck 2 M. Esponda-Argüero 47

binär Logische Bitoperatoren bitweise UND & a & b 7 bitweise ex-oder ^ a ^ b 6 bitweise ODER a b 5 ex-oder Aussage 1 ex-oder Aussage 2 ist wahr, falls nur eine der beiden Aussagen wahr ist, sonst falsch. bitweise ex-oder ^ ^ 1 1 ^ 1 ^ 1 1 1 M. Esponda-Argüero 48

Beispiel: 6 & 17 6 = 17 = 11 11 6 7 6 = 7 = 11 111 111 7-6 ^ 7-6 = 7 = 111111 111 1111111-3 -6 ^ -6-6 = -6 = 111111 111111 M. Esponda-Argüero 49

unär Bit-Operatoren Operator Zeichen Rtg. Beispiel Priorität Bitkomplement ~ ~ a 13 binär Linksschieben << op1 << op2 1 Rechtsschieben >> op1 >> op2 1 M. Esponda-Argüero 5

Bit-Operatoren Bitkomplement ~14 ~ 111 2 11111 2-15 Linksschieben 14<<2 111 2 <<2 111 2 56 Rechtsschieben 14>>3 Rechtsschieben -14>>3 111 2 >>3 1 2 1 1 11111 2 >>3 1111111 2-2 M. Esponda-Argüero 51

Beispiele: 15 << 3 12 equiv. 15 * 2 * 2 * 2 ~ 1-11 equiv. 15 >> 3 1 15 / 2 / 2 / 2 Wichtig! Die Ausführungsreihenfolge aller Operatoren hängt von der Bindungskraft (Präzedenz) und Richtung (Assoziativität) der Operatoren ab und kann durch runde Klammern ( ) verändert werden. M. Esponda-Argüero 52

Zuweisungsoperatoren Zuweisungen Benutzung gleichbedeutend mit Priorität = op1 = exp1 1 += op1 += op2 op1 = op1 + op2 1 -= op1 -= op2 op1 = op1 - op2 1 *= op1 *= op2 op1 = op1 * op2 1 /= op1 /= op2 op1 = op1 / op2 1 %= op1 %= op2 op1 = op1 % op2 1 &= op1 &= op2 op1 = op1 & op2 1 = op1 = op2 op1 = op1 op2 1 ^= op1 ^ = op2 op1 = op1 ^ op2 1 <<= op1 <<= op2 op1 = op1 << op2 1 >>= op1 >>= op2 op1 = op1 >> op2 1 M. Esponda-Argüero 53