Java Grundlagen - Uni Ulm · PDF fileJava Grundlagen Skript zum Kurs der Programmierstarthilfe...

download Java Grundlagen - Uni Ulm · PDF fileJava Grundlagen Skript zum Kurs der Programmierstarthilfe Fakultät für Ingenieurwissenschaften und Informatik Universität Ulm Jan-Patrick Elsholz

If you can't read please download the document

Transcript of Java Grundlagen - Uni Ulm · PDF fileJava Grundlagen Skript zum Kurs der Programmierstarthilfe...

  • Java Grundlagen

    Skript zum Kurs der Programmierstarthilfe

    Fakultt fr Ingenieurwissenschaften und InformatikUniversitt Ulm

    Jan-Patrick Elsholz und das Programmierstarthilfe-Team

    2009

  • ber dieses Skript

    Dieses Skript ber die Programmiersprache Java wurde fr die Programmierstarthilfe an derUniversitt Ulm unter Verwendung von Studiengebhren geschrieben. Es richtet sich insbesonderean Programmierneulinge und kann auch unabhngig von den Materialien der Programmierstarthilfezum Selbststudium verwendet werden. Thematisch beginnt das Skript bei den absoluten Grundlagenund leitet den Leser sehr ausfhrlich durch die Programmierkenntnisse die ein Informatikstudent imersten Semester vermittelt bekommt.

    Fehler gefunden?

    Wenn du in diesem Skript einen Fehler findest oder etwas von der Formulierung her schwerverstndlich findest, dann melde dich bitte bei uns. Wir sammeln alle Fehler und verbessern diekommende Version des Skripts. Schicke einfach eine Mail [email protected].

    Fassung 14. Oktober 2010, enthlt Korrekturen aus WS 2008/09Revision 441

    Name Kapitel sonstigesGuido de Melo 1, 2, 4, 5, 6, 7, 8 LATEXen, Bilder, EndredaktionBenjamin Erb 8, 9, C, E KorrekturenPeter Lobner 7, 8 KorrekturenRobert Schmitz 3, 4, D IDEs, KorrekturenFinn Steglich 4, 5, 6 KorrekturenJuliane Wessalowski KorrekturenMarcus Bombe 0, 5, 8, A, B Syntaxbersicht, KorrekturenLeonhard Martin KorrekturenJan-Patrick Elsholz Korrekturen

    This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 2.0License. To view a copy of this license, visithttp://creativecommons.org/licenses/by-nc-sa/2.0/de/ or send a letter toCreative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.Satz: PDF-LATEX 2

    [email protected]://creativecommons.org/licenses/by-nc-sa/2.0/de/

  • Inhaltsverzeichnis

    0 Einleitung 50.1 Zweck der Einleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50.2 Hufige Irrtmer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60.3 Programmieren? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70.4 Allgemeines ber Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90.5 Editoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100.6 Das erste Programm: Hello World . . . . . . . . . . . . . . . . . . . . . . 110.7 bersetzen und Ausfhren . . . . . . . . . . . . . . . . . . . . . . . . . . 120.8 bersetzungsfehler und andere Tcken . . . . . . . . . . . . . . . . . . . . 140.9 Kommentieren, Einrcken und Formatieren . . . . . . . . . . . . . . . . . 16

    1 Datentypen 191.1 Konventionen und Ausgabe . . . . . . . . . . . . . . . . . . . . . . . . . . 191.2 Variablen und Zahlen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191.3 Wahrheitswerte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201.4 Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211.5 Der Rest: byte, short, char, long, float . . . . . . . . . . . . . . . . . . . . 211.6 Typecasts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

    2 Kontrollstrukturen 232.1 Blcke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232.2 if-Anweisung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232.3 if mit mehreren Mglichkeiten . . . . . . . . . . . . . . . . . . . . . . . . 242.4 switch-Anweisung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

    3 Schleifen 273.1 for-Schleifen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273.2 while-Schleifen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273.3 do-while-Schleife . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283.4 Verschachtelte Schleifen . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

    4 Arrays 314.1 Eindimensionale Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314.2 Mehrdimensionale Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . 32

    5 Methoden 355.1 void als Rckgabetyp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355.2 Mehrere Parameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365.3 berladen von Methoden . . . . . . . . . . . . . . . . . . . . . . . . . . . 365.4 Aufruf von Methoden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

    6 Gltigkeit 396.1 Blcke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396.2 Blcke im Kleinen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406.3 Blcke bei Methoden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406.4 Blcke bei Klassen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416.5 Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

    3

  • Inhaltsverzeichnis

    7 Rekursion 437.1 Formen von Rekursion . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447.2 Gefahren bei Rekursion . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

    8 Objektorientierung 458.1 Klassen als Typen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458.2 Objekte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468.3 Methoden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468.4 Gltigkeit und statische Attribute . . . . . . . . . . . . . . . . . . . . . . . 488.5 public und private . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498.6 Referenzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

    9 Einfache abstrakte Datentypen 539.1 Listen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539.2 Bume . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

    A Exceptions 61A.1 Fehler abfangen mit try-catch . . . . . . . . . . . . . . . . . . . . . . . . . 61A.2 Exceptions erzeugen und weiterreichen . . . . . . . . . . . . . . . . . . . 64

    B Dateneingabe 67B.1 Einfaches Einlesen von der Tastatur . . . . . . . . . . . . . . . . . . . . . 67

    C Weiterfhrende Konzepte und Ausblick 69C.1 Objektorientierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69C.2 Weiterfhrendes zu Datentypen . . . . . . . . . . . . . . . . . . . . . . . . 75C.3 Grafische Benutzeroberflchen . . . . . . . . . . . . . . . . . . . . . . . . 84C.4 Thread-Programmierung mit Java . . . . . . . . . . . . . . . . . . . . . . 85

    D Integrierte Entwicklungsumgebungen 89D.1 Notepad + Compiler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89D.2 Vorteile von IDEs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89D.3 Nachteile von IDEs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91D.4 Welche IDE soll ich benutzen? . . . . . . . . . . . . . . . . . . . . . . . . 91

    E API - Dokumentation 93

    Syntaxbersicht 95

    4

  • 0 Einleitung

    Hallo Informatik-Studenten und Java-Interessierte,

    dieses Skript behandelt die Grundlagen der Programmiersprache Java. Es wurde von denVeranstaltern der Programmierstarthilfe der Universitt Ulm geschrieben und behandeltziemlich genau den Stoff, der im ersten Semester in der Vorlesung Praktische Informatikzum Thema Java behandelt wird. Es handelt sich folglich nicht um ein umfassendes Werkber Java welches jedes Thema in allen Details behandelt - fr diesen Zweck gibt es schonhunderte andere Bcher. Vielmehr ist es eben eine Zusammenfassung der Grundlagen. Ausdiesem Grund ist dieses Skript auch so geschrieben, dass auch Anfnger damit umgehenknnen und Spa am Programmieren entwickeln knnen. Hierzu klren wir in der Einlei-tung erst einmal alles Grundstzliche was man noch vor der ersten eigenen Zeile Java-Codewissen sollte. Im Nachfolgenden kommen wir dann zu teilweise aufeinander aufbauendeKapitel mit den Java-Grundlagen. Ein etwas grerer Anhang rundet das Skript ab undenthlt Hilfsmittel und zudem einen Ausblick auf Themen jenseits der Grundlagen.

    Das Skript wurde fr die Programmierstarthilfe an der Universitt Ulm geschrieben. Ur-sprnglich wurden die Java-Grundlagen auf den Aufgabenblttern der Programmierstart-hilfe vermittelt, allerdings sind wir der Meinung eine Trennung von Theorie und Aufgabenerhht die Lesbarkeit und somit auch die Benutzbarkeit sowohl von Aufgabenblttern alsauch des Skriptes. Damit Aufgaben und hiermit zusammenhngendes Wissen allerdingstrotzdem zusammenfinden, verweisen die Aufgabenbltter der Programmierstarthilfe aufdie einzelnen Kapitel und Unterkapitel dieses Skriptes. Das Skript hingegen wurde bewusstso geschrieben, dass es unabhngig von der Programmierstarthilfe und den Aufgabenblt-tern verwendet werden kann.

    Viel Spa mit der Programmiersprache Java!Euer Programmierstarthilfe-Team

    0.1 Zweck der Einleitung

    Wir besprechen in dieser Einleitung alle grundlegenden Dinge, die man wissen sollte nochbevor man berhaupt Befehle der Programmiersprache Java erlernt. Beginnen werden wirmit einer Klrung des Begriffs des Programmierens, dann werden wir uns ansehen, wasJava eigentlich fr eine Programmiersprache ist und welche Voraussetzungen es gibt, umJava zu verwenden. Sobald wir das wissen, sehen wir uns ein kleines Programm in Javaan und besprechen Zeile fr Zeile was dort eigentlich steht und was das bedeutet. Es giltweiterhin zu erfahren, wie man sein eigenes Programm am besten eingibt und wie manden Computer dazu bringt dieses Programm dann zu starten. Zum Ende der Einleitungbehandeln wir zudem noch, was man bei Problemen tun kann und wie man verstndlicheProgramme produziert.

    Diese Einleitung ist zudem nicht nur fr absolute Anfnger interessant. Auch wer schoneinmal programmiert hat und daher schon die ein oder andere Erfahrung mitbringt wird indieser Einleitung Wichtiges erfahren knnen. Daher sei e