Dr. Wolfram Amme, Einführung in die Programmiersprache Java, Informatik II, FSU Jena, SS 2002 1 Einführung in die Programmiersprache Java.

Slides:



Advertisements
Ähnliche Präsentationen
Ziele von EINI I + II Einführen in „Informatik“
Advertisements

ALP II: Objektorientierte Programmierung Sommersemester 2006
der Universität Oldenburg
Imperative Programmierung
der Universität Oldenburg
Forschungszentrum caesar
Einführung in die Programmierung Zusammenfassung
Variablen und Datentypen
PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.
(kleine!) Java Einführung Mittwoch, Heute Ziel: erstes Java-Programm erstellen Von der Aufgabenstellung bis zur Lösung Grundlagen Einfache.
der Universität Oldenburg
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
FH-Hof Verwaltung von Zeichenketten Richard Göbel.
Java: Grundlagen der Sprache
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
Objekte und Arbeitsspeicher
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 3 Klassen, Objekte, Arrays und Kontrollstrukturen Sommersemester 2003 Lars Bernard.
Imperative Programmierung
Java-Kurs - 2. Übung Entwicklungsumgebung Struktur von Programmen
Programmieren mit JAVA
Programmieren mit JAVA
Programmieren mit JAVA
Zusammenfassung Vorwoche
DVG Einführung in Java1 Einführung in JAVA.
DVG Klassen und Objekte
Sitzung 3: Klassen, Objekte, Arrays und Kontrollstrukturen
Grundkonzepte Java - Klassendefinition
Kontrollstrukturen Verwendung: Steuerung des Ablaufs.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
EPROG Tutorium Einheit 4 Klassen und Objekte. Wiederholung Schleifen do... while while for break/continue Strings String char Methoden für Strings Arrays.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
Variablenkonzept Klassisch, in Java Basistyp
Die Klasse String und ihre Methoden
EPROG Tutorium #3 Philipp Effenberger
Einführung in PHP 5.
CuP - Java Vierte Vorlesung Entspricht ungefähr Kapitel 2.1 des Skriptums Montag, 14. Oktober 2002.
CuP - Java Sechste Vorlesung Entspricht ungefähr Kapitel 3. 1 – 3
Programmieren in C Grundlagen C 2
BMEVIEEA100 Grundlagen der Programmierung
PHP: Operatoren und Kontrollstrukturen
PI Burgenland Java und JavaScript 1. Teil
Programmieren in C Grundlagen C 2
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
Java-Kurs - 3. Übung Hausaufgabe Arrays For-Schleifen.
Ausnahmen Vorlesung besteht aus zwei Teilen Programmierung (4 SWS)
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Einführung in die Programmierung mit Java
Java-Kurs Übung Besprechung der Hausaufgabe
Institut für Kartographie und Geoinformation Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit Java 4. Vorlesung WS 2004/2005.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Thomas H. Kolbe Einführung in die Programmierung mit Java 7. Vorlesung WS 2002/2003.
Programmierkurs JavaUE 4 Anweisungen und ProgrammeDietrich BolesSeite 1 Programmierkurs Java Dr. Dietrich Boles Teil Imperative Programmierung Unterrichtseinheit.
Einführung in Java PING e.V. Weiterbildung Andreas Rossbacher 24. März 2005.
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Seminar Internettechnologie Prof. Dr. Lutz Wegner Julia Mikov WS 06/07
, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 1 Die Programmiersprache Java.
Java Programme nur ein bisschen objektorientiert.
Die Programmiersprache Java
Dr. Wolfram Amme, Generisches Programmieren, Informatik II, FSU Jena, SS Generisches Programmieren.
Dr. Wolfram Amme, Virtuelle Vererbung, Informatik II, FSU Jena, SS Auflösung von Konflikten bei Mehrfachvererbung Umbenennung mehrdeutiger Methoden.
, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, SS Arithmetik in Java Ganzzahl-Division Nulldivision führt zu einer ArithmeticException.
Hello World! Javakurs 2013 Arne Kappen
SS 04 Christiane Rauh Christian Hellinger
Implementieren von Klassen
 Präsentation transkript:

Dr. Wolfram Amme, Einführung in die Programmiersprache Java, Informatik II, FSU Jena, SS Einführung in die Programmiersprache Java

Dr. Wolfram Amme, Einführung in die Programmiersprache Java, Informatik II, FSU Jena, SS Geschichtliche Entwicklung von Java Projekt “Green” (James Gosling), Interpreter Oak Herbst *7 (“Star Seven”) - Fernsteuerung Web Browser (HotJava) Fa. Netscape integriert eine JVM in ihren Browser Januar JDK JDBC, JavaBeans, Java WorkShop, Visual Cafe, J++, HotJava 1.0, JDK Java-Plattform 2

Dr. Wolfram Amme, Einführung in die Programmiersprache Java, Informatik II, FSU Jena, SS Eigenschaften von Java Portabel –Entwurf einer virtuellen Maschine –Java-Bytecode, Just-in-Time-Compiler –alle Datentypen in Java sind exakt festgelegt Objektorientiert –Java ist vollständig objektorientiert aufgebaut –Kapselung, Vererbung, Polymorphie –kein Direktzugriff auf Strukturen, kein Datentyp Zeiger Multithreaded –Methoden zur Interprozeß-Kommunikation und Synchronisation

Dr. Wolfram Amme, Einführung in die Programmiersprache Java, Informatik II, FSU Jena, SS Eigenschaften von Java Verteilt –Standardbibliothek enthält Klassen zur einfachen Erstellung von Client-Server-Applikationen Robust –Verzicht auf Zeigertypen –keine direkte Speicherfreigabe mit free –strenge Typprüfung, kein Überladen von Operatoren, Einschränkung automatischer Typumwandlung Sicher –Bytecode-Verifizierer –Einschränkung auf Zugriff lokaler Dateien –signierte Applets

Dr. Wolfram Amme, Einführung in die Programmiersprache Java, Informatik II, FSU Jena, SS Die Struktur von Java Java-Programm Java-Bytecodedateien... Datei 1 Datei n JVM Compiler Interpreter/JIT-Compiler

Dr. Wolfram Amme, Einführung in die Programmiersprache Java, Informatik II, FSU Jena, SS Ihr erstes Java-Programm Erstellen der Datei Hello.java public class Hello { public static void main(String args[]){ System.out.println(“Hello World!”); } Übersetzen des Quelltextes: javac Hello.java Ausführen des Programmes: java Hello

Dr. Wolfram Amme, Einführung in die Programmiersprache Java, Informatik II, FSU Jena, SS Die Sprachelemente von Java

Dr. Wolfram Amme, Einführung in die Programmiersprache Java, Informatik II, FSU Jena, SS Der Unicode-Zeichensatz Unicode-Zeichensatz –jedes Zeichen wird mit 16 Bit dargestellt –ASCII-Code ist eine Untermenge von Unicode –Darstellung von Unicode-Zeichen durch Escape-Sequenz \u –Bezeichner und Klassenname können Unicode-Zeichen enthalten Umsetzung von Java-Quelltext in Unicode-Zeichen-Sequenz UTF-8-Codierung –De- bzw. Codierungsmethoden in DataOutputStream bzw. DataInputStream

Dr. Wolfram Amme, Einführung in die Programmiersprache Java, Informatik II, FSU Jena, SS Blöcke Anweisungblöcke fassen Anweisungen zusammen if (bedingung) { tue_dies(); tue_das(); } in Blöcken vereinbarte Variablen dürfen Variablen übergeordneter Blöcke nicht überdecken int x = 0; { int y; // Gültige Variablendefinition int x; // Keine gültige Variablendefinition y = 5; }

Dr. Wolfram Amme, Einführung in die Programmiersprache Java, Informatik II, FSU Jena, SS Namensräume Hierarchie der Namensräume –außen steht der Namensraum des Pakets in der eine Klasse vereinbart ist –anschließend kommt der Namensraum der Klasse –Namensräume der Methoden werden in die Klassen eingebettet Methodenparameter überdecken Datenelemente der Klasse –innerhalb von Methoden können noch geschachtelte Blöcke stehen Auflösung der Bezeichner von innen nach außen –Suche nach Variablendeklaration beginnt im lokalen Namensraum, dann im übergeordneten, usw.

Dr. Wolfram Amme, Einführung in die Programmiersprache Java, Informatik II, FSU Jena, SS if-Anweisung Anweisungsform if (a < b) System.out.println(“a ist kleiner als b”); else System.out.println(“a ist größer oder gleich b”); ein else-Zweig wird stets dem davor stehenden if zugeordnet if (x >= 0) if ( x > 0) System.out.println(´´größer als Null´´); else; else System.out.println(´´kleiner als Null´´);

Dr. Wolfram Amme, Einführung in die Programmiersprache Java, Informatik II, FSU Jena, SS switch-Anweisung Anweisungsform: int x = 4; switch(x){ case 3: System.out.println(“Drei”); case 4: System.out.println(“Vier”); case 5: System.out.println(“Fünf”); default: System.out.println(“was anderes”); } Ausgabe: Vier Fünf was anderes Beenden der switch-Anweisung mit break

Dr. Wolfram Amme, Einführung in die Programmiersprache Java, Informatik II, FSU Jena, SS switch-Anweisung Anweisungsform: int x = 4; switch(x){ case 3: System.out.println(“Drei”); break; case 4: System.out.println(“Vier”); break; case 5: System.out.println(“Fünf”); break; default: System.out.println(“was anderes”); } Ausgabe: Vier

Dr. Wolfram Amme, Einführung in die Programmiersprache Java, Informatik II, FSU Jena, SS while- und do-Schleife while-Schleife elem = root; while(elem != null) elem = elem.next; do-Schleife int i=1; do{ System.out.println(“Das sage ich Dir jetzt zum “+(i++)+”.Mal!”); }while (i <= 10);

Dr. Wolfram Amme, Einführung in die Programmiersprache Java, Informatik II, FSU Jena, SS for-Schleife Anweisungsform: for(Initialisierung; Test; Inkrementierung){ Anweisungen; } Beispiel: int i, j; for(i = 1, j = 10; i <= 10; i++, j--) System.out.println(i+” “ +j);

Dr. Wolfram Amme, Einführung in die Programmiersprache Java, Informatik II, FSU Jena, SS Sprunganweisungen Verlassen von Anweisungsblöcken durch break Beispiel 1: while (true){... if (++i == 5) break; } Beispiel 2: foo: // benannte Schleife for ( int i = 1; i <= 5; i++){ for( int j = 1; j <= 2; j++){... ; if ((i + j) > 3) break foo; }

Dr. Wolfram Amme, Einführung in die Programmiersprache Java, Informatik II, FSU Jena, SS Fortsetzung einer Schleife mit continue durch die Anweisung continue wird der aktuelle Schleifendurchlauf unterbrochen int y = 0; while ( y < 2 ){ y++; int x = 0; while ( x < = 3 ) { if ( ++x <= 3 ) continue; System.out.println(´´x=´´+x+´´,y=´´+y); } continue kann wie break mit einer Marke versehen werden

Dr. Wolfram Amme, Einführung in die Programmiersprache Java, Informatik II, FSU Jena, SS Kommentare /* Ein mehrzeiliger Kommentar. Kommentare können nicht geschachtelt werden */ // Eine einzelne Kommentarzeile für javadoc: /** * Ein Dokumentationskommentar. * Eine HTML-Liste * * item 1 * item 2 * */

Dr. Wolfram Amme, Einführung in die Programmiersprache Java, Informatik II, FSU Jena, SS Reservierte Wörter ° Wörter sind reserviert, werden in der Java-Version 1.2 aber nicht benutzt °° in der Java-Version 1.2 hinzugefügt

Dr. Wolfram Amme, Einführung in die Programmiersprache Java, Informatik II, FSU Jena, SS Bezeichner und Namenskonventionen Anfangszeichen: Buchstabe, $-Zeichen oder ein Unterstrich (_) –Character.isJavaIdentifierStart(char) Namenskonventionen –grundsätzlich werden sprechende Bezeichner verwendet Paradebeispiel: ArrayIndexOutOfBoundsExecption, Ausnahme: i und j –Namen einfacher Datentypen werden vollständig klein geschrieben int, char, boolean... –Konstanten werden vollständig groß geschrieben (Label.CENTER) –Bezeichner von Klassen haben einen großen Anfangsbuchstaben, ansonsten Kleinbuchstaben. Float, aber LayoutManager –Bezeichner für Variablen, Methoden und Datenelementen werden klein geschrieben; ansonsten gelten die gleichen Regeln wie bei Klassen. String string, System.out.println, aber Button.getPreferredSize()

Dr. Wolfram Amme, Einführung in die Programmiersprache Java, Informatik II, FSU Jena, SS Datentypen primitive Datentypen Referenztypen

Dr. Wolfram Amme, Einführung in die Programmiersprache Java, Informatik II, FSU Jena, SS Literale Zahlenliterale Boolesche Literale true or false

Dr. Wolfram Amme, Einführung in die Programmiersprache Java, Informatik II, FSU Jena, SS Literale Zeichenliterale ´a´ ´#´ ´\n´ ´\u0030´ Zeichenkettenliterale ´´A string with a \t tab in it´´ ´´This string brought to you by Java \u2122´´

Dr. Wolfram Amme, Einführung in die Programmiersprache Java, Informatik II, FSU Jena, SS Ausdrücke und Operatoren Arithmetische Operatoren Beispiel: int x = 6, y = 4, res; res = x + y; // => res=10 res = x - y; // => res=2 res = x / y; // => res=1 res = x % y; // => res=2

Dr. Wolfram Amme, Einführung in die Programmiersprache Java, Informatik II, FSU Jena, SS Ausdrücke und Operatoren ZuweisungsoperatorenInkrement- und Dekrementoperatoren

Dr. Wolfram Amme, Einführung in die Programmiersprache Java, Informatik II, FSU Jena, SS Ausdrücke und Operatoren public class IncText { public static void main(String args[]){ int i = 1; prt(´´i: ´´+ i); // => i: 1 prt(´´++i: ´´+ ++i);// => ++i: 2 prt(´´i++: ´´+ i++);// => i++: 2 prt(´´i: ´´+ i); // => i: 3 prt(´´--i: ´´ + --i);// => --i: 2 prt(´´i--: ´´+ i--);// => i--: 2 prt(´´i: ´´+ i); // => i: 1 } static void prt(String s){ System.out.println(s); }

Dr. Wolfram Amme, Einführung in die Programmiersprache Java, Informatik II, FSU Jena, SS Ausdrücke und Operatoren Vergleichsoperatoren Logische Operatoren

Dr. Wolfram Amme, Einführung in die Programmiersprache Java, Informatik II, FSU Jena, SS Ausdrücke und Operatoren Bitweise Operatoren

Dr. Wolfram Amme, Einführung in die Programmiersprache Java, Informatik II, FSU Jena, SS Ausdrücke und Operatoren Bedingter Ausdruck ? : int x = 1, y = 2; int minValue = (X < Y) ? x : y; // minValue = 1 Operator instanceof zum Test auf Klassenzugehörigkeit int incData(Object data){ int i = 0; if (data instanceof Integer) i = ((Integer) data).intValue(); else if (data instanceof String) i = Integer.parseInt((String) data); return ++i; }

Dr. Wolfram Amme, Einführung in die Programmiersprache Java, Informatik II, FSU Jena, SS Arithmetik in Java Ganzzahl-Division Nulldivision führt zu einer ArithmeticException Gleitpunkt-Division verwendet den IEEE-754 in der Normalform positive und negative Null (0.0 und - 0.0) Nulldivision führt zu keiner ArithmeticException +  (POSITIVE_INFINITY) -  (NEGATIVE_INFINITY) NaN eine Zahl die keine ist: NaN nicht definierte arithmetische Operationen liefern den Wert NaN (Not a Number) float f; f = Float.NEGATIVE_INFINITY + Float.POSITIVE_INFINITY; System.out.println(Float.toString(f)) // => NaN

Dr. Wolfram Amme, Einführung in die Programmiersprache Java, Informatik II, FSU Jena, SS Sonderfälle von Gleitkommadivision und -rest XYX/YX%Y FINITE  0.0  NaN FINITE  0.0 X NaN  FINITE  NaN  NaN

Dr. Wolfram Amme, Einführung in die Programmiersprache Java, Informatik II, FSU Jena, SS Typkonvertierungen (Primitivtypen) Konvertieren von Primitivtypen erfolgt bei einer Zuweisung, wenn der Typ der Variablen und des zugewiesenen Ausdrucks nicht identisch sind bei einer Auswertung eines arithmetischen Ausdrucks, wenn die Operanden unterschiedlich sind beim Aufruf einer Methode, falls die Typen der aktuellen Parameter nicht mit denen der formalen Parameter übereinstimmen byte short intlongfloatdouble char Explizites Casting (typename) value(int) (x/y)

Dr. Wolfram Amme, Einführung in die Programmiersprache Java, Informatik II, FSU Jena, SS Typkonvertierung (Referenztypen) Umwandlungsarten Umwandlung eines Objekts vom Typ T in seine Basisklassen Umwandlung eines Objektes T in eine aus T abgeleitete Klasse (classname) object Primitivtypen Referenztypen Kein automatisches oder explizites Casting Die Wrapperklassen Integer, Long, Float, Double, Char,... entsprechen je einem primitiven Datentyp int i = 1903; Integer intObj = new Integer(i); myVector.addElement(intObj);

Dr. Wolfram Amme, Einführung in die Programmiersprache Java, Informatik II, FSU Jena, SS Operator-Rangfolge 1.[] () ! ~ instanceof 3.new (Typ) Ausdruck 4.* / % > >>> 7. >= <= 8.== != 9. & 10.^ 11.| 12.&& 13.| | 14.?: 15.= += -= *= /= &= ^= &= |= >= >>>=

Dr. Wolfram Amme, Einführung in die Programmiersprache Java, Informatik II, FSU Jena, SS Variablen Variablenarten: Instanz- und Klassenvariablen, lokale Variablen Variablen deklarieren int currentVersion; boolean isSuspended; Werte für Variablen zuweisen currentVersion = 1; isSuspended = true; int a, b, c = 5; lokale Variablen müssen Werte haben bevor sie benutzt werden Anfangswerte für Instanz- und Klassenvariablen null - für Klassenvariablen 0- für numerische Variablen ´\u0000´- für Zeichen false - für boolesche Variablen Konstantendefinition final int VERSION = 1;

Dr. Wolfram Amme, Einführung in die Programmiersprache Java, Informatik II, FSU Jena, SS Zeichenketten Zeichenketten sind Objekte der Klasse java.lang.String String s1 = ´´Eine konstante Zeichenkette´´ StringBuffer s2 = ´´ Eine veränderbare Zeichenkette´´ //Fehler Verkettung von Zeichenketten String s = ´´Ein String aus´´ + ´´ zwei Hälften´´ Kopieren von Zeichenketten String s; StringBuffer sb = new StringBuffer(´´ABC´´); s = sb.toString(); automatische Konvertierung von Zeichenketten for(int i = 1; i <= 10; i++) System.out.println(´´Der ´´ + i + ´´. String´´);

Dr. Wolfram Amme, Einführung in die Programmiersprache Java, Informatik II, FSU Jena, SS Zeichenketten Methoden der Klasse java.lang.String length()- liefert die Länge des String-Objekts charAt()- liefert das Zeichen an der bezeichneten Position equals()- Vergleichen von Zeichenketten substring()- liefert den Teilstring Methoden der Klasse java.lang.StringBuffer append()- hängt eine Zeichenkette am Ende des Strings ein insert()- fügt eine Zeichenkette an einer bestimmten Stelle ein delete()- löscht einen Teil des Strings replace()- ersetzt einen Teil des Strings length()- liefert die Länge der momentan enthaltenen Zeichenkette

Dr. Wolfram Amme, Einführung in die Programmiersprache Java, Informatik II, FSU Jena, SS Reihungen In Java sind Reihungen (engl. Arrays) spezielle Objekte Elementtyp einer Reihung wird Basistyp genannt in Java kann der Basistyp einer Reihung ein primitiver Typ oder ein Referenztyp sein Gemeinsamkeiten von Objekten und Reihungen Reihungen werden wie Objekte dynamisch angelegt Reihungen sind Referenztypen Reihungen sind wie alle Klassen in Java Unterklassen der Klasse Object Elemente einer Reihung werden wie Zustandsvariablen von Objekten automatisch initialisiert Unterschiede zwischen Objekten und Reihungen Arrays haben keine Konstruktoren. Statt dessen gibt es für Arrays eine spezielle Syntax des new-Operators Es können keine Unterklassen von Arrays definiert werden.

Dr. Wolfram Amme, Einführung in die Programmiersprache Java, Informatik II, FSU Jena, SS Deklaration und Erzeugen von Reihungen Deklaration von Reihungsvariablen int a1 []; int [] a1; String names []; Erzeugen von Reihungsobjekten durch den new-Operator a1 = new int[4]; int a2 [] = new int[4]; String names [] = new String[4] automatische Initialisierung eines Reihungsobjektes bei der Erzeugung primitiver Basistyp => vordefinierter Anfangswert des Basistyps ist der Basistyp ein Referenztyp => vordefinierte Anfangswert null

Dr. Wolfram Amme, Einführung in die Programmiersprache Java, Informatik II, FSU Jena, SS Initialisierung und Zugriff auf Reihungen Zugriff auf Reihungselemente a1[0] = 1; a1[1] = 2; a1[2] = 3; a1[3] = 4; names[0]=´´Karl´´; names[1]=´´Jan´´; names[2]=´´Uwe´´; names[3]=new String(´´Hans´´); Reihungslänge ist durch die Instanzvariable length gegeben for(int i = 0; i < a1.length; i++) a1 [i] = i + 1; Zugriffsfehler führt zu einer ArrayIndexOutOfBoundsException a1[4] =... // keine Ausnahmebehandlung => Laufzeitfehler Direktes Initialisieren von Reihungselementen int a1 [] = {1, 2, 3, 4}; String names[] = {´´Karl´´, ´´Jan´´, ´´Uwe´´, new String(´´Hans´´)};

Dr. Wolfram Amme, Einführung in die Programmiersprache Java, Informatik II, FSU Jena, SS Mehrdimensionale Reihungen Reihungen die als Basistyp eine Reihung haben ChessPiece [][] chessBoard ; chessBoard = new chessPiece[8][8]; chessBoard[0][0] = new ChessPiece(´´Rook´´); chessBoard[1][0] = new ChessPiece(´Pawn´); direktes Initialisieren mehrdimensionaler Reihungen int a [][] = { {1, 2, 3},{1, 2, 3}}; int a [][] = new int[2][3]; a[0][0] = 1; a[0][1] = 2; a[0][2] = 3; a[1][0] = 1; a[1][1] = 2; a[1][2] = 3; mehrdimensionale Reihungen müssen nicht rechteckig sein int a [][] = {{0}, {1,2},{1,2,1}};