- Wesentliche Eigenschaften von Java
- Java beschaffen und installieren
- Software-Installation unter Windows
- Software unter Linux-installieren
- 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 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 - 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: try-catch-finally
- 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)
- 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)
- 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
- Erstellen eines Jar-Archivs
- 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