Der Einstieg in Java - Kurzvorstellung und Softwareinstallation
  • Wesentliche Eigenschaften von Java
  • Java beschaffen und installieren
  • Software-Installation unter Windows
  • Software unter Linux-installieren
Der erste Kontakt mit Java
  • Das erste Java-Programm
  • Irrungen und Wirrungen - was bei schief gehen kann - Entwicklungszyklus
  • Das erste Programm mit Eclipse erstellen
  • UPDATE: Java 10 mit Eclipse nutzen
Variablen, einfache Datentypen, Ein- und Ausgabe
  • Variablen und primitive Datentypen
  • Variablen und Datentypen in der Praxis
  • Besondere Zeichen - Escape-Sequenzen
  • Zeichenketten - der Datentyp String
  • Interaktive Eingaben
  • Kommandozeilenargumente auswerten
  • Logische Verknüpfungen
  • Übungsaufgaben
  • Musterlösungen (Teil 1)
  • Musterlösungen (Teil 2)
Kontrollfluss - Sequenz, Verzweigung, Wiederholung
  • Kontrollfluss - Möglichkeiten, den Programmablauf zu steuern
  • if-else-Verzweigung
  • Konstanten vs. Magic Numbers
  • Mehrfachverzweigung mit switch-case
  • Der ternäre Operator
  • Wiederholungen: for-Schleife
  • Kurzschreibweisen für Operatoren
  • Wiederholungen: while-Schleife
  • Wiederholungen: do-while-Schleife
  • Schleifen vorzeitig abbrechen oder fortsetzen: break, continue und Sprungmarken
  • Übunsaufgaben
  • Musterlösungen (Teil 1)
  • Musterlösungen (Teil 2)
  • Musterlösungen (Teil 3)
Ausnahmen
  • Ausnahmen: try-catch-finally
Eigene Methoden definieren
  • Eine erste einfache Methode schreiben
  • Methoden mit Parametern und Rückgabewerten
  • Wertübergabe - Call by Value
  • Methoden rufen sich selbst auf - Rekursion
  • Rekursion: Fibonacci-Folge und Laufzeitverhalten
  • Fehlerbehandlung: Ausnahmen werfen
  • Überladen von Methoden
  • Übungsaufgaben
  • Musterlösungen (Teil 1)
  • Musterlösungen (Teil 2)
Arrays
  • Einführung - Arrays definieren
  • Array-Anwendung: Matrix-Multiplikation
  • Array-Anwendung: Zeichenkettenvergleich
  • Array-Anwendung: Sieb des Eratosthenes
  • Array-Anwendung: Sammler-Problem
  • Array-Anwendung: Lineare Suchen
  • Array-Anwendung: Binäre Suche
  • Array-Anwendung: BubbleSort und deutlich bessere Alternativen
  • Übungsaufgaben
  • Musterlösungen (Teil1)
  • Musterlösungen (Teil 2)
  • Musterlösungen (Teil 3)
Objektorientierte Programmierung
  • Einführung / Fahrplan
  • Packages und die Sichtbarkeit von Klassen
  • Klassen und Instanzen - Standardkonstruktoren
  • Standardkonstruktor vs. eigenem (evtl. parametrisiertem) Konstruktor
  • Information Hiding - Schutz vor unberechtigten Zugriffen
  • Daten mit Hilfe des Konstruktors verifizieren
  • Objekte miteinander vergleichen - Methoden equals() und hashCode() überschreiben
  • Objekte ausgeben - Überschreiben der Methode toString()
  • Objekte mit Hilfe eines Kopierkonstuktors vervielfältigen
  • Objekte klonen
  • Konstruktoren zur Initialisierung von Objekt-Instanzvariablen
  • Konstruktoren und Strings (Besonderheiten)
  • Tiefenkopien erzeugen
  • Objekte vergleichen, die Objekte enthalten
  • Setter-/Getter-Methoden unter Berücksichtigung von Referenzen
  • Exkurs: Altersberechnung mit Hilfe der Klasse ChronoUnit
  • Vererbung
  • Statische Variablen, Konstanten und Methoden
  • Übungsaufgabe: Implementieren Sie die Klasse Student selbstständig aus.
  • Musterlösung
  • Finale und abstrakte Klassen
  • Polymorphie - Vielgestaltigkeit
  • Referenzen als Zeiger verwenden
Java-Archive - Jar-Dateien
  • Erstellen eines Jar-Archivs
Abstrakte Datentypen und Generics
  • ADT - Single Linked List (Interface)
  • ADT - Single Linked List (Implementierung)
  • ADT - Single Linked List (Testprogramm)
  • Übungsaufgabe: Double Linked List
  • Musterlösung: Double Linked List
  • Enumerationen
  • Generics
  • Kellerspeicher (Stack)
  • Stack-Anwendungen: Umkehr
  • Stack-Anwendung: Single Linked List
  • Stack-Anwendung: Infix-Notation nach Postfix-Notation konvertieren