12.07.2015 Aufrufe

Programmierung mit Java – Einleitung - Urz

Programmierung mit Java – Einleitung - Urz

Programmierung mit Java – Einleitung - Urz

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

<strong>Programmierung</strong> <strong>mit</strong> <strong>Java</strong> – <strong>Einleitung</strong><strong>Programmierung</strong> <strong>mit</strong> <strong>Java</strong> – <strong>Einleitung</strong>Joachim Lammarsch, Babett Lemke, URZ, HeidelbergOktober 2002Diese Unterlagen dienen lediglich der Arbeitserleichterung der Kurs-Teilnehmer. Sie sindkein Handbuch oder Kurs im Selbststudium. Vervielfältigung und die darüber hinaus gehendeVerwendung ist nur <strong>mit</strong> Zustimmung der Autoren erlaubt.c○ MMII Joachim Lammarsch, Babett Lemke, URZ, Heidelberg () E–1


<strong>Programmierung</strong> <strong>mit</strong> <strong>Java</strong> – <strong>Einleitung</strong>Kapitel 1Information1.1 Dokumentation im Internet und als Buch• <strong>Java</strong>TM Language Specification (Originaldokumentation in englisch)http://java.sun.com/docs,http://java.sun.com/docs/books/tutorial undhttp://www.sun.com• <strong>Java</strong> – Einführung, Hubert Partl, Universität für Bodenkultur, Wien, 2000http://www.boku.ac.at/javaeinfSkript und Musterlösungen sehr empfehlenswert• Einführung in die Programmiersprache <strong>Java</strong>, Veiko Sinivee, Technische Universität Ilmenau,1998http://remus.prakinf.tu-ilmenau.de/wetter/java/vortrag.htmlc○ MMII Joachim Lammarsch, Babett Lemke, URZ, Heidelberg (j000005.tex) E–2


<strong>Programmierung</strong> <strong>mit</strong> <strong>Java</strong> – <strong>Einleitung</strong>• Go To <strong>Java</strong> 2, Guido Krüger, HTML-Version eines Buch erschienen bei Addison-Wesley, 2. Aufl. 2000ISBN: 3-8273-1370-8 <strong>mit</strong> CD-ROMhttp://www.javabuch.de• Thinking in <strong>Java</strong>, Bruce Eckel, Prentice Hall, 2nd Ed. 2000ISBN: 0-13-659723-8http://www.BruceEckel.comsehr umfangreich, setzt etliches an Grundkenntnissen vorausc○ MMII Joachim Lammarsch, Babett Lemke, URZ, Heidelberg (j000005.tex) E–3


<strong>Programmierung</strong> <strong>mit</strong> <strong>Java</strong> – <strong>Einleitung</strong>1.2 Bücher• <strong>Java</strong> 2: Programmieren lernen <strong>mit</strong> Suns J2SE Version 1.3 (Reihe SAMS in 21 Tagen),Laura Lemay, Roger Cadenhead, Markt & Technik, 2001ISBN: 3-8272-6014-0 <strong>mit</strong> CD-ROM• Die <strong>Java</strong> Bibel, Aaron Walsh, John Fronckowiak, MITP Verlag, 1998ISBN: 3-8266-0460-1, <strong>mit</strong> CD-ROMsehr umfangreich, für Anfänger nur bedingt geeignet• <strong>Java</strong> Grundlagen, Gerhard Wilhelms, MITP Verlag, 1999ISBN: 3-8266-0591-8, <strong>mit</strong> CD-ROM• <strong>Java</strong> professionell, Gerhard Wilhelms, Markus Kopp, MITP Verlag, 19998ISBN: 3-8266-0395-8, <strong>mit</strong> CD-ROMsehr umfangreich, nur für Fortgeschrittene, Beispiele laufen z. T. nicht• <strong>Java</strong> – Programmierhandbuch und Referenz für die <strong>Java</strong>-2-Plattform, Stefan Middendorf,Reiner Singer, dpunkt-Verlag, 2. Aufl., 1999ISBN: 3-920993-82-9, <strong>mit</strong> CD-ROM• <strong>Java</strong> 2 für Dummies, Donald J. Koosis, David Koosis, MITP Verlag, 1999ISBN: 3-8266-2828-4• <strong>Java</strong>2 <strong>mit</strong> Methode – Lernen, Verstehen, Anwenden, A. Austermann, C. Lange, J. Gallenbacher,C&L-Verlag, 1999ISBN: 3-932311-53-1, <strong>mit</strong> CD-ROMc○ MMII Joachim Lammarsch, Babett Lemke, URZ, Heidelberg (j000005.tex) E–4


<strong>Programmierung</strong> <strong>mit</strong> <strong>Java</strong> – <strong>Einleitung</strong>• Grundkurs <strong>Java</strong>, Dietmar Abts, Vieweg Verlag, 2. Aufl., 2000ISBN: 3-528-05711-9<strong>mit</strong> Beispielen und Übungsaufgaben• Graphic <strong>Java</strong> 2.0 – Die JFC beherrschen (AWT), Bd. 1, David Geary, Markt & Technik,1999ISBN: 3-8272-9585-8 <strong>mit</strong> CD-ROMc○ MMII Joachim Lammarsch, Babett Lemke, URZ, Heidelberg (j000005.tex) E–5


<strong>Programmierung</strong> <strong>mit</strong> <strong>Java</strong> – <strong>Einleitung</strong>1.3 Weitere Informationsquellen1.3.1 WWW-Server• http://java.sun.com/<strong>Java</strong>-Quell-Code, Compiler, Entwicklungstools, Dokumentation etc.• http://developer.java.sun.com/Support für Entwickler• http://www.informatik.uni-freiburg.de/<strong>Java</strong>/• http://java.pages.de• http://java.seite.net• http://www.gamelan.com• http://www.jars.com• http://www.nikos.com/javatoys• http://www.javaside.com• http://www.java.de• http://www.javamagazin.com• http://www.javaworld.com• http://www.javareport.comSammlung von AppletsDeutschsprachige <strong>Java</strong>-Seite<strong>Java</strong>-KursSammlung von Applets, ApplikationenSammlung von Applets, Applikationenungewöhnliche <strong>Java</strong>-Spielzeugegrössere <strong>Java</strong>-Applet-Sammlung<strong>Java</strong> User Group DeutschlandWeb-Seite der Zeitschrift <strong>Java</strong>-MagzinWeb-Seite der Zeitschrift <strong>Java</strong> WorldWeb-Seite der Zeitschrift <strong>Java</strong> Reportc○ MMII Joachim Lammarsch, Babett Lemke, URZ, Heidelberg (j000005.tex) E–6


<strong>Programmierung</strong> <strong>mit</strong> <strong>Java</strong> – <strong>Einleitung</strong>• http://www.sigs-datacom.de/sd/publicationsZeitschriften: <strong>Java</strong> und Objektspectrum• http://mindprod.com<strong>Java</strong>-Glossar• http://www.yahoo.com/Computers_and_Internet/Programming_Languages/<strong>Java</strong>• http://www.apl.jhu.edu/˜hall/javaInformationen zu <strong>Java</strong> von Marty Hall (SUN-Mitarbeiter)• http://www.sodaplay.comKreatives Spielen als komplexe <strong>Java</strong>-Anwendungc○ MMII Joachim Lammarsch, Babett Lemke, URZ, Heidelberg (j000005.tex) E–7


<strong>Programmierung</strong> <strong>mit</strong> <strong>Java</strong> – <strong>Einleitung</strong>1.3.3 FAQs (Fragen und Antworten)• http://www.javasoft.com/products/jdk/faq.html• http://sunsite.unc.edu/javafaq/javafaq.html• http://www.afu.com/javafaq.html• http://www.geocities.com/SiliconValley/Foothills/5270/java.htmlc○ MMII Joachim Lammarsch, Babett Lemke, URZ, Heidelberg (j000005.tex) E–9


<strong>Programmierung</strong> <strong>mit</strong> <strong>Java</strong> – <strong>Einleitung</strong>Kapitel 2<strong>Einleitung</strong>2.1 Geschichte• 1991 – Die Firma SUN formiert ein Team unter dem Codenamen Green Project.• Die Aufgabe waren Entwicklungsarbeiten für die Zukunftsmärkte Consumer Electronicsund Set-Top-Boxen.• Ziel war es, kleine Programme über TV-Kanäle zu laden, um Fernsehen interaktiv zugestalten.• Es wurde ein kleines und objektorientiertes System geschaffen, das auf keine Hardware-Plattformfestgelegt war.• Während der Entwicklung stellte sich heraus, daß der geplante Markt nicht schnellgenug wachsen würde.c○ MMII Joachim Lammarsch, Babett Lemke, URZ, Heidelberg (j000010.tex) E–10


<strong>Programmierung</strong> <strong>mit</strong> <strong>Java</strong> – <strong>Einleitung</strong>• Der entwickelte Prototyp fiel in den Bereich der Grundlagenforschung zurück.• Parallel kam es zur Entwicklung von HTML.• SUN erkannte, daß nicht nur einzelne TV-Kanäle, sondern auch das Internet ein optimalesTransportmedium für kleine Programme bietet.• Dadurch betrieb das Projekt Green Project keine reine Grundlagenforschung mehr.• Es wurde ein Konzept für eine Sprache entwickelt, die dem aktuellen Stand des heutigenNetwork-Computing entspricht.• Nach Ankündigung durch SUN Microsystems im Mai 1995 löste <strong>Java</strong> eine Stimmungwie beim Goldrausch aus.• Heute ist <strong>Java</strong> nicht nur im klassischen EDV-Sektor und im Internet etabliert, es findetauch immer mehr Anwendung bei den sogenannten kleinen Geräten wie Mobiltelefonen,Pagern, Set-Top-Boxen für Fernsehgeräte und Handheld-Computern.c○ MMII Joachim Lammarsch, Babett Lemke, URZ, Heidelberg (j000010.tex) E–11


<strong>Programmierung</strong> <strong>mit</strong> <strong>Java</strong> – <strong>Einleitung</strong>2.2 Entwicklung• Januar 1996 – JDK 1.0 freigegeben• Dezember 1996 – JDK 1.1 angekündigt• März 1997 – Hot<strong>Java</strong> 1.0 herausgegeben• Dezember 1998 – JDK 1.2 freigegeben• Januar 1999 – JDK 1.2 in <strong>Java</strong> 2 umbenannt• Mai 2000 – JDK 1.3 freigegeben• August 2001 – JDK 1.4 im β-Test• Februar 2002 – JDK 1.4 freigegeben<strong>Java</strong> soll eine einfache, objektorientierte, verteilte, interpretierte, robuste, sichere, architekturneutrale,portable, performante, nebenläufige, dynamische Programmiersprache sein.c○ MMII Joachim Lammarsch, Babett Lemke, URZ, Heidelberg (j000010.tex) E–12


<strong>Programmierung</strong> <strong>mit</strong> <strong>Java</strong> – <strong>Einleitung</strong>2.3 Was ist <strong>Java</strong>?• <strong>Java</strong> bietet als Sprache nichts Neues.• Es verbindet die Vorteile unterschiedlicher Sprachen, wie beispielsweise– C/C++,– Objective-C und– Smalltalkzu einer einzigen Sprache.• Es verzichtet auf Funktionalität, die nicht benötigt wird.• <strong>Java</strong> ist plattformunabhängig.• Eine virtuelle Maschine ist die Grundlage für die Plattformunabhängigkeit von <strong>Java</strong>-Applikationen und <strong>Java</strong>-Applets.• Die (neue) virtuelle Maschine (VM) HotSpot ist verfügbar und braucht keinen Vergleichzur Performance anderer Programmiersprachen zu scheuen.• <strong>Java</strong> weist Ausdrücken Speicherplatz explizit zu und nimmt ihn zurück, wenn er nichtmehr benötigt wird (Garbage Collection).c○ MMII Joachim Lammarsch, Babett Lemke, URZ, Heidelberg (j000020.tex) E–13


<strong>Programmierung</strong> <strong>mit</strong> <strong>Java</strong> – <strong>Einleitung</strong>2.4 Wie arbeitet <strong>Java</strong>?• <strong>Java</strong> ist eine vollständige und objektorientierte Programmiersprache.• Es bietet zwei unterschiedliche Arten, Anwendungen zu erstellen:– Einerseits herkömmliche Applikationen, die über einen Interpreter oder einen Justin-time-Compilerausgeführt werden.– Andererseits die Entwicklung von <strong>Java</strong>-Applets, die durch javafähige Webbrowseroder spezielle Applet-Viewer gestartet werden.• Zwei Programme werden im Wesentlichen für <strong>Java</strong> benötigt:– Ein Compiler für die Übersetzung der <strong>Java</strong>-Eingabe.– Ein Interpreter, der den erzeugten Code interpretiert und in Maschinenanweisungenumsetzt.• Mit <strong>Java</strong> läuft ein Programm unter vielen Betriebssystemen, wie beispielsweise Windows95, 98, ME, Windows NT, 2000, XP, OS/2, Macintosh, Solaris, AIX, Linux etc.c○ MMII Joachim Lammarsch, Babett Lemke, URZ, Heidelberg (j000030.tex) E–14


<strong>Programmierung</strong> <strong>mit</strong> <strong>Java</strong> – <strong>Einleitung</strong>Kapitel 3Ein erstes BeispielUm das Arbeiten <strong>mit</strong> <strong>Java</strong> zu verdeutlichen, beginnen wir <strong>mit</strong> einem Beispiel das am Bildschirmlediglich die ZeileViel Erfolg <strong>mit</strong> <strong>Java</strong>!ausgibt. Dieses Beispiel wird dann modifiziert, so dass als AusgabeHallo,Viel Erfolg <strong>mit</strong> <strong>Java</strong>!erscheint.c○ MMII Joachim Lammarsch, Babett Lemke, URZ, Heidelberg (j000040.tex) E–15


<strong>Programmierung</strong> <strong>mit</strong> <strong>Java</strong> – <strong>Einleitung</strong>3.1 Einführungsbeispiel 11 public class Beisp012 {3 public static void main(String args[])4 {5 System.out.println("Viel Erfolg <strong>mit</strong> <strong>Java</strong>!");67 System.exit(0);8 }9 }ergibt als Ausgabe am Bildschirm:Viel Erfolg <strong>mit</strong> <strong>Java</strong>!c○ MMII Joachim Lammarsch, Babett Lemke, URZ, Heidelberg (j000040.tex) E–16


<strong>Programmierung</strong> <strong>mit</strong> <strong>Java</strong> – <strong>Einleitung</strong>1 public class Beisp012 {3 public static void main(String args[])4 {5 System.out.println("Viel Erfolg <strong>mit</strong> <strong>Java</strong>!");67 System.exit(0);8 }9 }• Ein <strong>Java</strong>-Programm besteht aus einer Menge von Klassendefinitionen.• Jede Klasse sollte in einer separaten Datei stehen.• Der Namen der Datei muß identisch dem Namen der Klasse sein.• (Mindestens) eine Klasse muss public sein.• Alle zur Klasse gehörenden Attribute und Methoden werden in geschweiften Klammerneingeschlossen.c○ MMII Joachim Lammarsch, Babett Lemke, URZ, Heidelberg (j000040.tex) E–17


<strong>Programmierung</strong> <strong>mit</strong> <strong>Java</strong> – <strong>Einleitung</strong>1 public class Beisp012 {3 public static void main(String args[])4 {5 System.out.println("Viel Erfolg <strong>mit</strong> <strong>Java</strong>!");67 System.exit(0);8 }9 }• Um die Klasse durch einen Interpreter ausführen zu können, muß innerhalb dieser Klasseeine Methode der Form public static void main (String args[])deklariert werden.• Die zur Methode gehörenden Befehle werden in geschweiften Klammern eingeschlossen.c○ MMII Joachim Lammarsch, Babett Lemke, URZ, Heidelberg (j000040.tex) E–18


<strong>Programmierung</strong> <strong>mit</strong> <strong>Java</strong> – <strong>Einleitung</strong>1 public class Beisp012 {3 public static void main(String args[])4 {5 System.out.println("Viel Erfolg <strong>mit</strong> <strong>Java</strong>!");67 System.exit(0);8 }9 }• System.out.println() gibt eine Zeichenkette auf der Standardausgabe aus.• Eine Zeichenkette ist eine Folge von Zeichen, die in Anführungszeichen eingeschlossenist.• System.exit() beendet das Programm und gibt einen Return code ans Betriebssystemzurück.• Alle Befehle müssen <strong>mit</strong> einem Semikolon beendet werden.c○ MMII Joachim Lammarsch, Babett Lemke, URZ, Heidelberg (j000040.tex) E–19


<strong>Programmierung</strong> <strong>mit</strong> <strong>Java</strong> – <strong>Einleitung</strong>3.2 Einführungsbeispiel 1b1 public class Beisp01b2 {3 public static void main(String args[])4 {5 System.out.println("Hallo, \n" +6 "Viel Erfolg <strong>mit</strong> <strong>Java</strong>!");78 System.exit(0);9 }10 }ergibt als Ausgabe am Bildschirm:Hallo,Viel Erfolg <strong>mit</strong> <strong>Java</strong>!• Die Ausgabe in zwei Zeilen wird durch \n erreicht.• Durch den Befehl + werden zwei Zeichenketten verkettet.c○ MMII Joachim Lammarsch, Babett Lemke, URZ, Heidelberg (j000041.tex) E–20


<strong>Programmierung</strong> <strong>mit</strong> <strong>Java</strong> – <strong>Einleitung</strong>3.3 Einführungsbeispiel 1c1 public class Beisp01c2 {3 public static void main(String args[])4 {5 System.out.println("********************************\n" +6 "* *\n" +7 "* Hallo, viel Erfolg <strong>mit</strong> <strong>Java</strong>! *\n" +8 "* *\n" +9 "********************************");1011 System.exit(0);12 }13 }c○ MMII Joachim Lammarsch, Babett Lemke, URZ, Heidelberg (j000042.tex) E–21


<strong>Programmierung</strong> <strong>mit</strong> <strong>Java</strong> – <strong>Einleitung</strong>Als Ausgabe erhält man:********************************* ** Hallo, viel Erfolg <strong>mit</strong> <strong>Java</strong>! ** *********************************• Leerzeichen innerhalb von Zeichenketten sind signifikant und werden genauso in dieAusgabe übernommen.• Leerzeichen/Leerzeilen innerhalb des Programm-Codes werden nicht übernommen.c○ MMII Joachim Lammarsch, Babett Lemke, URZ, Heidelberg (j000042.tex) E–22


<strong>Programmierung</strong> <strong>mit</strong> <strong>Java</strong> – <strong>Einleitung</strong>Kapitel 4Bearbeitung eines <strong>Java</strong>-ProgrammsDa <strong>Java</strong> unabhängig von bestimmten Betriebssystemen verwendet werden soll, wird bei derBearbeitung eines <strong>Java</strong>-Programms in zwei Schritten vorgegangen:1. Übersetzung der <strong>Java</strong>-Eingabe durch den <strong>Java</strong>-Compiler in den betriebsystemunabhängigen<strong>Java</strong>-Byte-Code.2. Interpretation des <strong>Java</strong>-Byte-Code durch den <strong>Java</strong>-Interpreter.Beide Schritte können auf unterschiedlichen Rechnern unter unterschiedlichen Betriebssystemendurchgeführt werden.c○ MMII Joachim Lammarsch, Babett Lemke, URZ, Heidelberg (j000050.tex) E–23


<strong>Programmierung</strong> <strong>mit</strong> <strong>Java</strong> – <strong>Einleitung</strong>4.1 Übersetzen des <strong>Java</strong>-Programms✛✚Eingabe❄JAVA-COMPILER❄Editierenedit/vi dateiname.java✘Compilieren✙javac dateiname.javaKlassedateiname.class• Die <strong>Java</strong>-Eingabe kann <strong>mit</strong> jedem beliebigen Editor erstellt werden.• Der <strong>Java</strong>-Compiler javac übersetzt die <strong>Java</strong>-Eingabe in den <strong>Java</strong>-Byte-Code, der ineiner class-Datei gespeichert wird.• Diesen <strong>Java</strong>-Byte-Code kann man (falls Bedarf besteht) <strong>mit</strong>tels des Befehls javap ineine lesbare Form konvertieren.c○ MMII Joachim Lammarsch, Babett Lemke, URZ, Heidelberg (j000050.tex) E–24


<strong>Programmierung</strong> <strong>mit</strong> <strong>Java</strong> – <strong>Einleitung</strong>4.2 <strong>Java</strong>-Byte-CodeCompiled from Beisp01.javapublic class Beisp01 extends java.lang.Object {public Beisp01();public static void main(java.lang.String[]);}Method Beisp01()0 aload_01 invokespecial #6 4 returnMethod void main(java.lang.String[])0 getstatic #8 3 ldc #1 5 invokevirtual #9 8 iconst_09 invokestatic #7 12 returnc○ MMII Joachim Lammarsch, Babett Lemke, URZ, Heidelberg (j000050.tex) E–25


<strong>Programmierung</strong> <strong>mit</strong> <strong>Java</strong> – <strong>Einleitung</strong>4.3 Ausführen des <strong>Java</strong>-ProgrammsKlasse❄✛JAVA-INTERPRETER✚❄✘Byte-Code ausführen✙java dateinameAusgabe• Der <strong>Java</strong>-Byte-Code wird durch den <strong>Java</strong>-Interpreter java interpretiert.c○ MMII Joachim Lammarsch, Babett Lemke, URZ, Heidelberg (j000050.tex) E–26


<strong>Programmierung</strong> <strong>mit</strong> <strong>Java</strong> – <strong>Einleitung</strong>Kapitel 5<strong>Java</strong>-EingabeBei der Erstellung eines <strong>Java</strong>-Programm kann jeder beliebige Editor verwendet werden. Esmuss lediglich darauf geachtet werden, dass keine Formatierbefehle <strong>mit</strong>eingebunden werden(wie das beispielsweise Microsoft Word tut).<strong>Java</strong> benutzt, da es für einen weltweiten Einsatz konzipiert ist, als Zeichensatz den Unicode-Zeichensatz. Dies bedeutet jedoch keine Einschränkung, da dessen ersten 256 Zeichen <strong>mit</strong>dem bei uns überlicherweise verwendeten ASCII-Zeichensatz übereinstimmen.Für einige Zeichen, die nicht über die Tastatur erreichbar sind, werden Escape-Character,d.h. besondere Zeichenkombinationen zur Verfügung gestellt.5.1 Der ZeichensatzFür ein Zeichen werden zwei Bytes im Speicher belegt.c○ MMII Joachim Lammarsch, Babett Lemke, URZ, Heidelberg (j000055.tex) E–27


<strong>Programmierung</strong> <strong>mit</strong> <strong>Java</strong> – <strong>Einleitung</strong>Es gibt folgende Zeichen:1. Klein- und Großbuchstaben:a b c . . . z und A B C . . . Z2. Alle Zeichen oberhalb hexadezimal 00C0 werden ebenfalls als Buchstaben akzeptiert(Unicode-Zeichensatz).3. Ziffern:0 1 2 . . . 94. Unterstreichungsstrich:_ (für Variablennamen)5. „Backslash“:\ (Fluchtsymbol, Maskierungszeichen)6. Sonderzeichen:[ ] { } ( ) < > ! % ˆ & * + − = : ; , . ¨ ? | ˜c○ MMII Joachim Lammarsch, Babett Lemke, URZ, Heidelberg (j000055.tex) E–28


<strong>Programmierung</strong> <strong>mit</strong> <strong>Java</strong> – <strong>Einleitung</strong>5.2 Besondere Zeichen- und ZeichenkettenobjekteBesondere Zeichen- und Zeichenkettenobjekte werden auch als „escape character“ bezeichnet.Bedeutung Wert DarstellungNeue Zeile NL \nTabulator HT \tLöschtaste BS \bZeilenvorschub CR \rSeitenvorschub FF \fMaskierungszeichen \ \\Hochkomma (einfach) ’ \’Anführungszeichen " \"Oktal 0ddd \[0-7][0-7][0-7]Hexadezimal 0xdd \x[0-9,A-F][0-9,A-F]\x[0-9,a-f][0-9,a-f]Unicode 0xdddd \u[0-9,A-F][0-9,A-F][0-9,A-F][0-9,A-F]\u[0-9a-f][0-9a-f][0-9a-f][0-9a-f]Beispiele für ein Unicode-Zeichen \u00c0, Hexadezimal-Zeichen \xff, Oktal-Zeichen\00.c○ MMII Joachim Lammarsch, Babett Lemke, URZ, Heidelberg (j000056.tex) E–29


<strong>Programmierung</strong> <strong>mit</strong> <strong>Java</strong> – <strong>Einleitung</strong>Kapitel 6Ein zweites Beispiel6.1 Einführungsbeispiel 21 // Summe zweier ganzen Zahlen23 public class Beisp024 {5 public static void main(String args[])6 {7 int zahl1, zahl2, summe;89 zahl1=22;10 zahl2=38;c○ MMII Joachim Lammarsch, Babett Lemke, URZ, Heidelberg (j000060.tex) E–30


<strong>Programmierung</strong> <strong>mit</strong> <strong>Java</strong> – <strong>Einleitung</strong>1112 summe=zahl1+zahl2;1314 System.out.println(summe);15 System.exit(0);16 }17 }Als Ausgabe erhält man:60c○ MMII Joachim Lammarsch, Babett Lemke, URZ, Heidelberg (j000060.tex) E–31


<strong>Programmierung</strong> <strong>mit</strong> <strong>Java</strong> – <strong>Einleitung</strong>1 // Summe zweier ganzen Zahlen23 public class Beisp024 {5 public static void main(String args[])6 {7 int zahl1, zahl2, summe;8 ...• Ein Zeilenkommentar wird durch die Zeichen // eingeleitet.• Durch den Befehl int werden die Variablen zahl1, zahl2 und summe für ganzeZahlen deklariert.c○ MMII Joachim Lammarsch, Babett Lemke, URZ, Heidelberg (j000060.tex) E–32


<strong>Programmierung</strong> <strong>mit</strong> <strong>Java</strong> – <strong>Einleitung</strong>8 ...9 zahl1=22;10 zahl2=38;1112 summe=zahl1+zahl2;13 ...• Das Gleichheitszeichen ist der Zuweisungsoperator. Den Variablen auf der linken Seitewird die Konstante auf der rechten Seite zugewiesen.• Der arithmetische Ausdruck auf der rechten Seite des Zuweisungsoperators wird berechnetund der Variablen auf der linken Seite zugewiesen.• Der Operatoren + steht für die Addition.c○ MMII Joachim Lammarsch, Babett Lemke, URZ, Heidelberg (j000060.tex) E–33


<strong>Programmierung</strong> <strong>mit</strong> <strong>Java</strong> – <strong>Einleitung</strong>12 ...1314 System.out.println(summe);15 System.exit(0);16 }17 }• System.out.println(summe) gibt das Ergebnis auf der Standardausgabe <strong>mit</strong>Zeilenvorschub aus.• System.exit() beendet das Programm und gibt einen Return code ans Betriebssystemzurück.c○ MMII Joachim Lammarsch, Babett Lemke, URZ, Heidelberg (j000060.tex) E–34


<strong>Programmierung</strong> <strong>mit</strong> <strong>Java</strong> – <strong>Einleitung</strong>6.2 Rechnen im Druck-BefehlBeispiel (1):1 public class Ausg012 {3 public static void main(String [] args)4 {5 System.out.println("Die Summe ist " + 1 + 2);67 System.exit(0);8 }9 }Als Ausgabe erhält man:Die Summe ist 12c○ MMII Joachim Lammarsch, Babett Lemke, URZ, Heidelberg (j000063.tex) E–35


<strong>Programmierung</strong> <strong>mit</strong> <strong>Java</strong> – <strong>Einleitung</strong>Beispiel (2):1 public class Ausg022 {3 public static void main(String [] args)4 {5 System.out.println("Die Summe ist " + (1 + 2));67 System.exit(0);8 }9 }Als Ausgabe erhält man:Die Summe ist 3c○ MMII Joachim Lammarsch, Babett Lemke, URZ, Heidelberg (j000063.tex) E–36


<strong>Programmierung</strong> <strong>mit</strong> <strong>Java</strong> – <strong>Einleitung</strong>Kapitel 7Ein drittes Beispiel7.1 Einführungsbeispiel 31 /* Länge des Marathonlaufs in Kilometer */2 public class Beisp033 {4 public static void main(String args[])5 {6 double meilen, yards, kilometer;78 meilen=26.0;9 yards=385.0;10c○ MMII Joachim Lammarsch, Babett Lemke, URZ, Heidelberg (j000061.tex) E–37


<strong>Programmierung</strong> <strong>mit</strong> <strong>Java</strong> – <strong>Einleitung</strong>11 kilometer=1.609*(meilen+yards/1760.0);12 System.out.print(13 "Die Länge des Marathonlaufs beträgt ");14 System.out.print(kilometer);15 System.out.println(" km.");1617 System.exit(0);18 }19 }Als Ausgabe erhält man:Die Länge des Marathonlaufs beträgt 42.18596875 km.c○ MMII Joachim Lammarsch, Babett Lemke, URZ, Heidelberg (j000061.tex) E–38


<strong>Programmierung</strong> <strong>mit</strong> <strong>Java</strong> – <strong>Einleitung</strong>1 /* Länge des Marathonlaufs in Kilometer */2 public class Beisp033 {4 public static void main(String args[])5 {6 double meilen, yards, kilometer;7 ...• Ein Blockkommentar wird durch die Zeichen /* und */ begrenzt.• Durch den Befehl double werden die Variablen meilen, yards und kilometerfür Gleitkommazahlen (Gleitpunktzahlen) deklariert.c○ MMII Joachim Lammarsch, Babett Lemke, URZ, Heidelberg (j000061.tex) E–39


<strong>Programmierung</strong> <strong>mit</strong> <strong>Java</strong> – <strong>Einleitung</strong>7 ...8 meilen=26.0;9 yards=385.0;1011 kilometer=1.609*(meilen + yards/1760.0);12 ...• Das Gleichheitszeichen ist der Zuweisungsoperator. Die Konstanten auf der rechtenSeite werden den Variablen auf der linken Seite zugewiesen.• Der arithmetische Ausdruck auf der rechten Seite des Zuweisungsoperators wird bestimmtund der Variablen auf der linken Seite zugewiesen.• Die Operatoren *, +, / stehen für Multiplikation, Addition und Division.• In runden Klammern eingeschlossene Operationen werden zuerst ausgeführt; es geltendie üblichen Rechenregeln der Mathematik (Punkt vor Strich).c○ MMII Joachim Lammarsch, Babett Lemke, URZ, Heidelberg (j000061.tex) E–40


<strong>Programmierung</strong> <strong>mit</strong> <strong>Java</strong> – <strong>Einleitung</strong>11 ...12 System.out.print("Die Länge des Marathonlaufs beträgt ");13 System.out.print(kilometer);14 System.out.println(" km.");1516 System.exit(0);17 }18 }• System.out.print("Die Länge...") gibt die Zeichenkette auf der Standardausgabeohne Zeilenvorschub aus.• System.out.print(kilometer) gibt ebenso die Gleitkommazahl auf der Standardausgabeohne Zeilenvorschub aus.• System.out.println(" km.") gibt wiederum die Zeichenkette auf der Standardausgabedieses Mal <strong>mit</strong> Zeilenvorschub aus.• Leerzeichen werden nicht automatisch eingefügt.c○ MMII Joachim Lammarsch, Babett Lemke, URZ, Heidelberg (j000061.tex) E–41


<strong>Programmierung</strong> <strong>mit</strong> <strong>Java</strong> – <strong>Einleitung</strong>7.2 Beispiel 3 verbessert1 /* Länge des Marathonlaufs in Kilometer */2 public class Beisp03b3 {4 public static void main(String args[])5 {6 double meilen, yards, kilometer;78 meilen=26.;9 yards=385.;1011 kilometer=1.609*(meilen + yards/1760.0);12 System.out.println("Die Länge des Marathonlaufs " +13 "beträgt " + kilometer + " km.");1415 System.exit(0);16 }17 }ergibt als Ausgabe am Bildschirm:Die Länge des Marathonlaufs beträgt 42.18596875 km.c○ MMII Joachim Lammarsch, Babett Lemke, URZ, Heidelberg (j000062.tex) E–42


<strong>Programmierung</strong> <strong>mit</strong> <strong>Java</strong> – <strong>Einleitung</strong>12 ...13 System.out.println("Die Länge des Marathonlaufs " +14 "beträgt " + kilometer + " km.");1516 System.exit(0);17 }18 }• System.out.println() gibt eine einzige Zeichenkette auf der Standardausgabe<strong>mit</strong> Zeilenvorschub aus.• Mehrere Zeichenketten können <strong>mit</strong> + hintereinander gehängt werden – das Plus-Zeichenhat hier eine andere Bedeutung als Addieren.• Der Wert der Variablen kilometer wird von <strong>Java</strong> automatisch in eine Zeichenketteumgewandelt.c○ MMII Joachim Lammarsch, Babett Lemke, URZ, Heidelberg (j000062.tex) E–43


<strong>Programmierung</strong> <strong>mit</strong> <strong>Java</strong> – <strong>Einleitung</strong>Kapitel 8Eingabe von ParameternMöchte man einem <strong>Java</strong>-Programm beim Programmstart bzw. während des ProgrammablaufsWerte <strong>mit</strong> bzw. übergeben, dann kann dies1. als Parameter beim Aufruf des <strong>Java</strong>-Interpreters bzw.2. über die Tastatur zur Programmablaufzeit geschehen.Da dies jedoch tiefere Kenntnisse in <strong>Java</strong> erfordert, soll die Vorgehensweise nur kurz alsMuster vorgestellt werden.8.1 Parameter bei mainUm auf die Parameter der Methode main() zuzugreifen, muß man den Namen args verwenden.Es wird bei jeder Methode main deklariert.c○ MMII Joachim Lammarsch, Babett Lemke, URZ, Heidelberg (j000140.tex) E–44


<strong>Programmierung</strong> <strong>mit</strong> <strong>Java</strong> – <strong>Einleitung</strong>Um auf die einzelnen Parameter zuzugreifen, verwendet man eine Schreibweise <strong>mit</strong> Indizierung,beispielsweise args[n] wobei die Zahl n den Index darstellt.Im Gegensatz zu C/C++ ist args[0] nicht der Programmname, sondern der erste Parameter.• Den ersten Parameter erhält man durch args[0],• den zweiten Parameter durch args[1],• den dritten Parameter durch args[2],• . . .Man erhält als Eingabe immer eine Zeichenkette.c○ MMII Joachim Lammarsch, Babett Lemke, URZ, Heidelberg (j000140.tex) E–45


<strong>Programmierung</strong> <strong>mit</strong> <strong>Java</strong> – <strong>Einleitung</strong>Beispiel:1 public class Bspargs2 {3 public static void main(String args[])4 {5 System.out.println("1. Parameter: " + args[0]);6 System.out.println("2. Parameter: " + args[1]);7 System.exit(0);8 }9 }ergibt bei dem Aufrufjava Bspargs 1.1111 2.2222als Ausgabe am Bildschirm:1. Parameter: 1.11112. Parameter: 2.2222c○ MMII Joachim Lammarsch, Babett Lemke, URZ, Heidelberg (j000140.tex) E–46


<strong>Programmierung</strong> <strong>mit</strong> <strong>Java</strong> – <strong>Einleitung</strong>8.1.1 Konvertierung der Zeichenketten args[n]Der Wert, den man durch args[n] erhält, ist eine Zeichenkette vom Datentyp String, diezur arithmetischen Bearbeitung in einen geeigneten Datentyp konvertiert werden muss.Hierfür gibt es eigene Methoden wie beispielsweise:Integer.parseInt(args[n]) für integerDouble.parseDouble(args[n]) für doubleShort.parseShort(args[n]) für shortByte.parseByte(args[n]) für byteLong.parseLong(args[n]) für longFloat.parseFloat(args[n]) für floatargs[n].charAt(0)für charc○ MMII Joachim Lammarsch, Babett Lemke, URZ, Heidelberg (j000140.tex) E–47


<strong>Programmierung</strong> <strong>mit</strong> <strong>Java</strong> – <strong>Einleitung</strong>Beispiel Typ Integer:1 public class PbspInt2 {3 public static void main(String args[])4 {5 int v1, v2;6 v1 = Integer.parseInt(args[0]);7 v2 = Integer.parseInt(args[1]);8 System.out.println(v1+v2);9 System.exit(0);10 }11 }ergibt bei dem Aufrufjava PbspInt 1 2als Ausgabe am Bildschirm:3c○ MMII Joachim Lammarsch, Babett Lemke, URZ, Heidelberg (j000140.tex) E–48


<strong>Programmierung</strong> <strong>mit</strong> <strong>Java</strong> – <strong>Einleitung</strong>Beispiel Type Double:1 public class PbspDouble2 {3 public static void main(String args[])4 {5 double v1, v2;6 v1 = Double.parseDouble(args[0]);7 v2 = Double.parseDouble(args[1]);8 System.out.println(v1+v2);9 System.exit(0);10 }11 }ergibt bei dem Aufrufjava PbspDouble 1.1111 2.2222als Ausgabe am Bildschirm:3.3333c○ MMII Joachim Lammarsch, Babett Lemke, URZ, Heidelberg (j000140.tex) E–49


<strong>Programmierung</strong> <strong>mit</strong> <strong>Java</strong> – <strong>Einleitung</strong>Beispiel Typ Char:1 public class BspChar2 {3 public static void main(String args[])4 {5 char v1, v2;6 v1 = args[0].charAt(0);7 v2 = args[1].charAt(0);8 System.out.println(v1 + " " + v2);9 System.exit(0);10 }11 }ergibt bei dem Aufrufjava BspChar a bals Ausgabe am Bildschirm:a bc○ MMII Joachim Lammarsch, Babett Lemke, URZ, Heidelberg (j000140.tex) E–50


<strong>Programmierung</strong> <strong>mit</strong> <strong>Java</strong> – <strong>Einleitung</strong>8.2 Einlesen von der TastaturMöchte man ganze Zahlen von der Tastatur einlesen, muss man die Zahlen als Zeichenketteneinlesen und in eine ganze Zahl umwandeln.Beispiel:1 import java.io.*;23 public class Ein0014 {5 public static void main(String args[]) throws IOException6 {7 BufferedReader eingabe=new BufferedReader(8 new InputStreamReader(System.in));910 int zahl1, zahl2, zahl3;1112 System.out.println("Bitte erste ganze Zahl eingeben!");13 zahl1=Integer.parseInt(eingabe.readLine());1415 System.out.println("Bitte zweite ganze Zahl eingeben!");16 zahl2=Integer.parseInt(eingabe.readLine());c○ MMII Joachim Lammarsch, Babett Lemke, URZ, Heidelberg (j000145.tex) E–51


<strong>Programmierung</strong> <strong>mit</strong> <strong>Java</strong> – <strong>Einleitung</strong>1718 zahl3=zahl1+zahl2;1920 System.out.println("Die Summe ist " + zahl3 + ".");21 System.exit(0);22 }23 }ergibt folgenden DialogBitte erste ganze Zahl eingeben!1Bitte zweite ganze Zahl eingeben!2Die Summe ist 3.Der Befehl import java.io.* macht die Komponenten des Paketes java.io verfügbar.Ohne diesen Befehl könnte <strong>Java</strong> weder BufferedReader noch InputStreamreaderfinden.Der Befehl eingabe.readLine liest eine Zeichenkette von der Tastatur ein, die in eineganze Zahl konvertiert wird.c○ MMII Joachim Lammarsch, Babett Lemke, URZ, Heidelberg (j000145.tex) E–52


<strong>Programmierung</strong> <strong>mit</strong> <strong>Java</strong> – <strong>Einleitung</strong>Die Eingabe von Gleitpunktzahlen erfolgt analogBeispiel:1 import java.io.*;23 public class Ein0024 {5 public static void main(String args[]) throws IOException6 {7 BufferedReader eingabe=new BufferedReader(8 new InputStreamReader(System.in));910 double zahl1, zahl2, zahl3;1112 System.out.println("Bitte erste Zahl eingeben!");13 zahl1=Double.parseDouble(eingabe.readLine());1415 System.out.println("Bitte zweite Zahl eingeben!");16 zahl2=Double.parseDouble(eingabe.readLine());1718 zahl3=zahl1+zahl2;19c○ MMII Joachim Lammarsch, Babett Lemke, URZ, Heidelberg (j000145.tex) E–53


<strong>Programmierung</strong> <strong>mit</strong> <strong>Java</strong> – <strong>Einleitung</strong>20 System.out.println("Die Summe ist " + zahl3 + ".");21 System.exit(0);22 }23 }ergibt folgenden DialogBitte erste Zahl eingeben!1.2Bitte zweite Zahl eingeben!1.3Die Summe ist 2.5.c○ MMII Joachim Lammarsch, Babett Lemke, URZ, Heidelberg (j000145.tex) E–54


<strong>Programmierung</strong> <strong>mit</strong> <strong>Java</strong> – <strong>Einleitung</strong>Kapitel 9Applets (ein Beispiel)Beim Aufruf der folgenden HTML-Datei in einem Web-Browser oder <strong>mit</strong> dem appletviewererhält man auf dem Bildschirm die folgende Ausgabe:c○ MMII Joachim Lammarsch, Babett Lemke, URZ, Heidelberg (happlet.tex) E–55


<strong>Programmierung</strong> <strong>mit</strong> <strong>Java</strong> – <strong>Einleitung</strong>c○ MMII Joachim Lammarsch, Babett Lemke, URZ, Heidelberg (happlet.tex) E–56


<strong>Programmierung</strong> <strong>mit</strong> <strong>Java</strong> – <strong>Einleitung</strong>Beispiel:1 import java.awt.*;23 public class Nb extends java.applet.Applet {4 public void paint(Graphics g) {5 Hb landh1=new Hb (g,50,50,3,2,30,6 Color.green,Color.yellow,Color.red);7 Hb landh2=new Hb (g,150,150,4,2,30,8 Color.green,Color.yellow,Color.red);9 Hb landh3=new Hb (g,200,50,4,1,30,10 Color.green,Color.yellow,Color.red);11 }12 }1314 class Hb {15 Graphics gg;16 int x, y, af, as, h, b, d;17 double dw;18 Color fw, ff, fd;1920 // Konstruktor21 public Hb(Graphics gobj, int xpos, int ypos, int anzf,22 int anzs, int dachnw, Color farbw,c○ MMII Joachim Lammarsch, Babett Lemke, URZ, Heidelberg (happlet.tex) E–57


<strong>Programmierung</strong> <strong>mit</strong> <strong>Java</strong> – <strong>Einleitung</strong>23 Color farbf, Color farbd) {24 gg=gobj;25 x=xpos; y=ypos;26 af=anzf; as=anzs;27 dw=dachnw*Math.PI/180.;28 fw=farbw; ff=farbf; fd=farbd;29 h=40; b=30; d=0;30 zeichneHaus();31 }3233 // Methode zeichneFenster in vorgegebener Farbe34 public void zeichneFenster() {35 gg.setColor(fw); gg.fillRect(x,y,b,h);36 gg.setColor(ff); gg.fillRect(x+8,y+10,14,15);37 }3839 // Methode zeichneStock40 public void zeichneStock() {41 int xx=x;42 for(int i=1;i


<strong>Programmierung</strong> <strong>mit</strong> <strong>Java</strong> – <strong>Einleitung</strong>46 }47 }4849 // Methode zeichneWand50 public void zeichneWand() {51 int yy=y;52 zeichneStock();53 for(int i=1;i


<strong>Programmierung</strong> <strong>mit</strong> <strong>Java</strong> – <strong>Einleitung</strong>69 public void zeichneHaus() {70 zeichneWand(); zeichneDach();71 }72 }c○ MMII Joachim Lammarsch, Babett Lemke, URZ, Heidelberg (happlet.tex) E–60


<strong>Programmierung</strong> <strong>mit</strong> <strong>Java</strong> – <strong>Einleitung</strong>Inhaltsverzeichnis1 Information E–21.1 Dokumentation im Internet und als Buch . . . . . . . . . . . . . . . . . . E–21.2 Bücher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . E–41.3 Weitere Informationsquellen . . . . . . . . . . . . . . . . . . . . . . . . E–61.3.1 WWW-Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . E–61.3.2 News-Gruppen (news groups) . . . . . . . . . . . . . . . . . . . E–81.3.3 FAQs (Fragen und Antworten) . . . . . . . . . . . . . . . . . . . E–92 <strong>Einleitung</strong> E–102.1 Geschichte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . E–102.2 Entwicklung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . E–122.3 Was ist <strong>Java</strong>? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . E–132.4 Wie arbeitet <strong>Java</strong>? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . E–143 Ein erstes Beispiel E–15c○ MMII Joachim Lammarsch, Babett Lemke, URZ, Heidelberg (toc) E–i


<strong>Programmierung</strong> <strong>mit</strong> <strong>Java</strong> – <strong>Einleitung</strong>3.1 Einführungsbeispiel 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . E–163.2 Einführungsbeispiel 1b . . . . . . . . . . . . . . . . . . . . . . . . . . . E–203.3 Einführungsbeispiel 1c . . . . . . . . . . . . . . . . . . . . . . . . . . . E–214 Bearbeitung eines <strong>Java</strong>-Programms E–234.1 Übersetzen des <strong>Java</strong>-Programms . . . . . . . . . . . . . . . . . . . . . . E–244.2 <strong>Java</strong>-Byte-Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . E–254.3 Ausführen des <strong>Java</strong>-Programms . . . . . . . . . . . . . . . . . . . . . . E–265 <strong>Java</strong>-Eingabe E–275.1 Der Zeichensatz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . E–275.2 Besondere Zeichen- und Zeichenkettenobjekte . . . . . . . . . . . . . . . E–296 Ein zweites Beispiel E–306.1 Einführungsbeispiel 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . E–306.2 Rechnen im Druck-Befehl . . . . . . . . . . . . . . . . . . . . . . . . . E–357 Ein drittes Beispiel E–377.1 Einführungsbeispiel 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . E–377.2 Beispiel 3 verbessert . . . . . . . . . . . . . . . . . . . . . . . . . . . . E–428 Eingabe von Parametern E–448.1 Parameter bei main . . . . . . . . . . . . . . . . . . . . . . . . . . . . . E–448.1.1 Konvertierung der Zeichenketten args[n] . . . . . . . . . . . . E–47c○ MMII Joachim Lammarsch, Babett Lemke, URZ, Heidelberg (toc) E–ii


<strong>Programmierung</strong> <strong>mit</strong> <strong>Java</strong> – <strong>Einleitung</strong>8.2 Einlesen von der Tastatur . . . . . . . . . . . . . . . . . . . . . . . . . . E–519 Applets (ein Beispiel) E–55c○ MMII Joachim Lammarsch, Babett Lemke, URZ, Heidelberg (toc) E–iii

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!