Die Programmiersprache Java

Slides:



Advertisements
Ähnliche Präsentationen
ALP II: Objektorientierte Programmierung Sommersemester 2006
Advertisements

der Universität Oldenburg
der Universität Oldenburg
Forschungszentrum caesar
Variablen und Datentypen
PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.
10. Grundlagen imperativer Programmiersprachen
(kleine!) Java Einführung Mittwoch, Heute Ziel: erstes Java-Programm erstellen Von der Aufgabenstellung bis zur Lösung Grundlagen Einfache.
3 Sprachelemente und Anweisungen JavaHS Merseburg (FH) WS 06/07 Strings (Zeichenketten)
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.
Java-Kurs - 2. Übung Entwicklungsumgebung Struktur von Programmen
Programmieren mit JAVA
Programmieren mit JAVA
Programmieren mit JAVA
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
Zusammenfassung Vorwoche
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Einführung in Java1 Einführung in JAVA.
DVG Methoden 1 Methoden. 2 int dezi = Integer.parseInt(args[0]); boolean vz = (dezi>=0); dezi = Math.abs(dezi); String Bin = ""; do { } while.
DVG Klassen und Objekte
Marcus Haller & René Schulze
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Grundkonzepte Java - Klassendefinition
Informatik 1 Übung 2.
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
BMEVIEEA100 Grundlagen der Programmierung
PHP: Operatoren und Kontrollstrukturen
PI Burgenland Java und JavaScript 1. Teil
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
Übersicht Nachtrag zu Ausdrücken
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
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.
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
Variablen und Datentypen
, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 1 Die Programmiersprache Java.
Dr. Wolfram Amme, Einführung in die Programmiersprache Java, Informatik II, FSU Jena, SS Einführung in die Programmiersprache Java.
Java Programme nur ein bisschen objektorientiert.
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.
JAVA - Einführung. © Übersicht Hintergrund und Geschichte Wie sieht ein JAVA Programm aus ? Was ist ein JAVA Programm ? Wie schreibt/übersetzt.
, 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
Java-Kurs - 4. Übung weitere Kontrollstrukturen
Java-Kurs - 2. Übung primitive Datentypen, Konstanten
SS 04 Christiane Rauh Christian Hellinger
Implementieren von Klassen
 Präsentation transkript:

Die Programmiersprache Java

Geschichtliche Entwicklung von Java 1991- Projekt “Green” (James Gosling), Interpreter Oak Herbst 1992 - *7 (“Star Seven”) - Fernsteuerung 1994 - Web Browser (HotJava) 1995 - Fa. Netscape integriert eine JVM in ihren Browser Januar 1996 - JDK 1.0.2 1996 - JDBC, JavaBeans, Java WorkShop, Visual Cafe, J++, ... 1997 HotJava 1.0, JDK 1.1 1998 Java-2-Plattform 1. Programmiersprache Java ist angelehnt an C++ und Smalltalk, meister Teil von C++, aber Bytecode und Garbage Collection von Smalltalk Ziel des Greenprojektes: Etwicklung einer Programmiersprache zur Programmieung von hybriden Systemen im Consumer-Electronic- Bereich => PS die sowohl zur Programmierung von Waschmaschinen als auch Telefonanlagen ==> Portable und klein Programme --> Virtueller Maschinen Code 2. Fernsteuerung hat die Power einer SPARCsation in &*4*4 inches-Kasten Aber kein Interesse bei Sun, das Ding herzustellen. Keiner wollte das Ding kaufen --> Auflösung des Gren Projektes Green 1994 Web-Browserwurde in Java geschrieben um die Maechtigkeit von Java zu zeigen. Web-Browser sollte Aplletts verarbeiten können

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, Polymorphismus kein Direktzugriff auf Strukturen, kein Datentyp Zeiger, keine Mehrfachvererbung Multithreaded Methoden zur Interprozeß-Kommunikation und Synchronisation 1. Grafik anfertigen Typ int 32-Bit Zahl float 32-Bit-Zahl nach dem IEEE-754Standard

Eigenschaften von Java Verteilt Standardbibliothek enthält Klassen zur einfachen Erstellung von Client-Server-Applikationen Robust Verzicht auf Zeiger keine direkte Speicherfreigabe mit free strenge Typprüfung, kein Überladen von Operatoren, keine Mehrfachvererbung, Einschränkung automatischer Typumwandlung Sicher Bytecode-Verifizierer Einschränkung auf Zugriff lokaler Dateien signierte Applets

Unterschiede zu C++ keine Typedefs, Defines und kein Präprozessor keine Strukturen und Unions keine Funktionen außerhalb von Klassen keine Mehrfachvererbung keine Goto-Befehle keine automatische Typenumwandlung keine Zeiger und keine manuelle Speicherverwaltung

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

Die Sprachelemente von Java

Der 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

Blöcke Anweisungblöcke fassen Anweisungen zusammen if (bedingung) { tue_dies(); tue_das(); } in Blöcken vereinbarte Variablen dürfen Variablen aus übergeordneten Blöcken nicht überdecken // nachfolgender Programmcode führt zu einem Übersetzungsfehler int x = 0; { int x; x = 5;

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 (Geschachtelte Klassen => ineinander geschachtelte Namensräume) 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.

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 davorstehenden else zugeordnet if (x >= 0) if ( x > 0) System.out.println(´´größer als Null´´); else; System.out.println(´´kleiner als Null´´);

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

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

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

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;

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

Kommentare für javadoc: /* Ein mehrzeiliger Kommentar. Kommentare können nicht geschachtelt werden */ // Eine einzelne Kommentarzeile für javadoc: /** * Ein Dokumentationskommentar. * Eine <em>HTML-Liste<em> * <ol> * <li> item 1 * <li> item 2 */

Reservierte Wörter ° Wörter sind reserviert, werden in der Java-2-Plattform aber nicht benutzt °° in der Java-2-Plattform hinzugefügt

Bezeichner und Namenskonvention 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()

Datentypen primitive Datentypen Referenztypen

Literale Zahlenliterale Boolesche Literale true or false

Literale Zeichenliterale Zeichenkettenliterale ´a´ ´#´ ´\n´ ´\u0030´ ´´A string with a \t tab in it´´ ´´This string brought to you by Java \u2122´´

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

Ausdrücke und Operatoren Zuweisungsoperatoren Inkrement- und Dekrementoperatoren

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 } static void prt(String s){ System.out.println(s);

Ausdrücke und Operatoren Vergleichsoperatoren Logische Operatoren

Ausdrücke und Operatoren Bitweise Operatoren

Ausdrücke und Operatoren Bedingter Ausdruck <Bedingung> ? <Dann-Wert> : <Sonst-Wert> 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; }

Arithmetik in Java Ganzzahl-Division Gleitpunkt-Division Nulldivision führt zu einer ArithmeticException Gleitpunkt-Division Nulldivision führt zu keiner ArithmeticException, anstelle dessen werden die Werte NEGATIVE_INFINITY und POSITIVE_INFINITY benutzt eine Zahl die keine ist: NaN nicht definierte arithmetrische Operaitionen liefern den Wert NaN (Not a Number) float f; f = Float.NEGATIVE_INFINITY + Float.POSITIVE_INFINITY; System.out.println(Float.toString(f)) // => NaN

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 int long float double char Explizites Casting (typename) value (int) (x/y)

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

Operator-Rangfolge 1. [] () 2. ++ -- ! ~ instanceof 1. [] () 2. ++ -- ! ~ instanceof 3. new (Typ) Ausdruck 4. * / % 5. + - 6. << >> >>> 7. < > >= <= 8. == != 9. & 10. ^ 11. | 12. && 13. | | 14. ?: 15. = += -= *= /= &= ^= &= |= <<= >>= >>>=

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 currentVersion = 1;

Zeichenketten Zeichenketten sind Objekte der Klasse java.lang.String String s1 = ´´Eine konstante Zeichenkette´´ StringBuffer s2 = ´´ Eine veränderbare Zeichenkette´´ 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´´);

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