Hier finden Sie Lösungsvorschläge zu den Übungsaufgaben. Suchen Sie einfach anhand des Inhaltsverzeichnisses die Stelle, an der sich die Aufgabe im Buch befindet, und navigieren Sie über den Link in den entsprechenden Teil des Dokuments.
-
1 Einige Grundbegriffe aus der Welt des Programmierens
-
1.1 Computer, Software, Informatik und das Internet
-
1.2 Was heißt Programmieren?
-
1.3 Welche Werkzeuge brauchen wir?
-
2 Aller Anfang ist schwer
-
3 Grundlagen der Programmierung in Java
-
3.1 Grundelemente eines Java-Programms
-
3.1.1 Kommentare
-
3.1.2 Bezeichner und Namen
-
3.1.3 Literale
-
3.1.4 Reservierte Wörter, Schlüsselwörter
-
3.1.5 Trennzeichen
-
3.1.6 Interpunktionszeichen
-
3.1.7 Operatorsymbole
-
3.1.8 import-Anweisungen
-
3.1.9 Zusammenfassung
-
-
3.2 Erste Schritte in Java
-
3.2.1 Grundstruktur eines Java-Programms
-
3.2.2 Ausgaben auf der Konsole
-
3.2.3 Eingaben von der Konsole
-
3.2.4 Schöner programmieren in Java
-
3.2.5 Zusammenfassung
-
-
3.3 Einfache Datentypen
-
3.3.1 Ganzzahlige Datentypen
-
3.3.2 Gleitkommatypen
-
3.3.3 Der Datentyp char für Zeichen
-
3.3.4 Der Datentyp String für Zeichenketten
-
3.3.5 Der Datentyp boolean für Wahrheitswerte
-
3.3.6 Implizite und explizite Typumwandlungen
-
3.3.7 Zusammenfassung
-
-
3.4 Der Umgang mit einfachen Datentypen
-
3.5 Anweisungen und Ablaufsteuerung
-
3.5.1 Anweisungen
-
3.5.2 Blöcke und ihre Struktur
-
3.5.3 Entscheidungsanweisungen
-
3.5.4 Wiederholungsanweisungen, Schleifen
-
3.5.4.1 Die for-Anweisung
-
3.5.4.2 Vereinfachte for-Schleifen-Notation
-
3.5.4.3 Die while-Anweisung
-
3.5.4.4 Die do-Anweisung
-
3.5.4.5 Endlosschleifen
-
3.5.5 Sprungbefehle und markierte Anweisungen
-
3.5.6 Zusammenfassung
-
-
4 Referenzdatentypen
-
4.1 Felder (Arrays)
-
4.1.1 Was sind Felder?
-
4.1.2 Deklaration, Erzeugung und Initialisierung von Feldern
-
4.1.3 Felder unbekannter Länge
-
4.1.4 Referenzen
-
4.1.5 Ein besserer Terminkalender
-
4.1.6 Mehrdimensionale Felder
-
4.1.7 Mehrdimensionale Felder unterschiedlicher Länge
-
4.1.8 Vorsicht, Falle: Kopieren von mehrdimensionalen Feldern
-
4.1.9 Vereinfachte for-Schleifen-Notation
-
4.1.10 Zusammenfassung
-
-
4.2 Klassen
-
4.2.1 Willkommen in der ersten Klasse!
-
4.2.2 Komponentenzugriff bei Objekten
-
4.2.3 Ein erstes Adressbuch
-
4.2.4 Klassen als Referenzdatentyp
-
4.2.5 Felder von Klassen
-
4.2.6 Vorsicht, Falle: Kopieren von geschachtelten Referenzdatentypen
-
4.2.7 Zusammenfassung
-
-
5 Methoden, Unterprogramme
-
5.1 Methoden
-
5.1.1 Was sind Methoden?
-
5.1.2 Deklaration von Methoden
-
5.1.3 Parameterübergabe und Ergebnisrückgabe
-
5.1.4 Aufruf von Methoden
-
5.1.5 Überladen von Methoden
-
5.1.6 Variable Argumentanzahl bei Methoden
-
5.1.7 Vorsicht, Falle: Referenzen als Parameter
-
5.1.8 Sichtbarkeit und Verdecken von Variablen
-
5.1.9 Zusammenfassung
-
-
5.2 Rekursiv definierte Methoden
-
5.3 Die Methode main
-
5.4 Methoden aus anderen Klassen aufrufen
-
5.5 Methoden von Objekten aufrufen
-
-
6 Die objektorientierte Philosophie
-
6.1 Die Welt, in der wir leben
-
6.2 Programmierparadigmen – Objektorientierung im Vergleich
-
6.3 Die vier Grundpfeiler objektorientierter Programmierung
-
6.4 Modellbildung – von der realen Welt in den Computer
-
6.5 Zusammenfassung
-
-
7 Der grundlegende Umgang mit Klassen
-
7.1 Vom Referenzdatentyp zur Objektorientierung
-
7.2 Instanzmethoden
-
7.2.1 Zugriffsrechte
-
7.2.2 Was sind Instanzmethoden?
-
7.2.3 Instanzmethoden zur Validierung von Eingaben
-
7.2.4 Instanzmethoden als erweiterte Funktionalität
-
7.3 Statische Komponenten einer Klasse
-
7.4 Instanziierung und Initialisierung
-
7.4.1 Konstruktoren
-
7.4.2 Überladen von Konstruktoren
-
7.4.3 Der statische Initialisierer
-
7.4.4 Der Mechanismus der Objekterzeugung
-
7.5 Zusammenfassung
-
-
8 Vererbung und Polymorphie
-
8.1 Wozu braucht man Vererbung?
-
8.1.1 Aufgabenstellung
-
8.1.2 Analyse des Problems
-
8.1.3 Ein erster Ansatz
-
8.1.4 Eine Klasse für sich
-
8.1.5 Stärken der Vererbung
-
8.1.6 Vererbung verhindern durch final
-
-
8.2 Die super-Referenz
-
8.3 Überschreiben von Methoden und Variablen
-
8.4 Die Klasse Object und der Umgang mit instanceof und @Override
-
8.4.1 Methoden der Klasse Object sinnvoll überschreiben
-
8.4.2 Hilfe beim Überschreiben: Die Annotation @Override
-
8.4.3 Der Operator instanceof und das Pattern-Matching
-
8.4.4 Das Pattern-Matching für switch
-
-
8.6 Abstrakte Klassen und Interfaces
-
8.6.1 Einsatzszenarien am Beispiel
-
8.6.2 Abstrakte Klassen im Detail
-
8.6.3 Interfaces im Detail
-
8.7 Interfaces mit Default-Methoden und statischen Methoden
-
8.7.1 Deklaration von Default-Methoden
-
8.7.2 Deklaration von statischen Methoden
-
8.7.3 Auflösung von Namensgleichheiten bei Default-Methoden
-
8.7.4 Interfaces und abstrakte Klassen im Vergleich
-
8.8 Weiteres zum Thema Objektorientierung
-
8.9 Zusammenfassung
-
-
9 Exceptions und Errors
-
9.1 Eine Einführung in Exceptions
-
9.1.1 Was ist eine Exception?
-
-
9.1.3 Abfangen von Exceptions
-
9.1.4 Ein Anwendungsbeispiel
-
9.1.5 Die RuntimeException
-
-
9.2 Exceptions für Fortgeschrittene
-
9.2.1 Definieren eigener Exceptions
-
-
9.2.3 Vererbung und Exceptions
-
9.2.4 Vorsicht, Falle!
-
9.2.5 Der finally-Block
-
9.2.6 Die Klassen Throwable und Error
-
9.2.7 Zusammenfassung
-
-
9.3 Assertions
-
9.4 Mehrere Ausnahmetypen in einem catch-Block
-
9.5 Ausblick: try-Block mit Ressourcen
-
10 Fortgeschrittene Themen der objektorientierten Programmierung
-
10.1 Aufzählungstypen
-
10.1.1 Deklaration eines Aufzählungstyps
-
10.1.2 Instanzmethoden der enum-Objekte
-
10.1.3 Selbstdefinierte Instanzmethoden für enum-Objekte
-
-
10.2 Generische Datentypen
-
10.2.1 Herkömmliche Generizität
-
10.2.2 Generizität durch Typ-Parameter
-
10.2.3 Einschränkungen der Typ-Parameter
-
10.2.4 Wildcards
-
10.2.5 Bounded Wildcards
-
10.2.6 Generische Methoden
-
10.2.7 Verkürzte Notation bei generischen Datentypen
-
10.2.8 Ausblick
-
-
10.3 Sortieren von Feldern und das Interface Comparable
-
10.4 Versiegelte Klassen und Interfaces
-
10.4.1 Der Mechanismus der Versiegelung
-
10.4.2 Versiegelung am Beispiel von Klassen
-
10.4.3 Versiegelung am Beispiel mit einem Interface
-
10.4.4 Hilfreiche Konsequenzen für das Pattern-Matching
-
-
10.5 Records
-
11 Einige wichtige Hilfsklassen
-
11.1 Die Klasse StringBuffer
-
11.2 Die Wrapper-Klassen (Hüll-Klassen)
-
11.2.1 Arbeiten mit „eingepackten“ Daten
-
11.2.2 Aufbau der Wrapper-Klassen
-
11.2.3 Ein Anwendungsbeispiel
-
11.2.4 Automatische Typwandlung für die Wrapper-Klassen
-
-
11.3 Die Klassen BigInteger und BigDecimal
-
11.3.1 Arbeiten mit langen Ganzzahlen
-
11.3.2 Aufbau der Klasse BigInteger
-
-
11.3.4 Arbeiten mit langen Gleitkommazahlen
-
11.3.5 Aufbau der Klasse BigDecimal
-
11.3.6 Viele Stellen von Nullstellen gefällig?
-
-
11.4 Die Klasse DecimalFormat
-
11.4.1 Standardausgaben in Java
-
11.4.2 Arbeiten mit Format-Objekten
-
11.4.3 Vereinfachte formatierte Ausgabe
-
-
11.5 Die Klassen Date und Calendar
-
11.5.1 Arbeiten mit „Zeitpunkten“
-
11.5.2 Auf die Plätze, fertig, los!
-
11.5.3 Spezielle Calendar-Klassen
-
11.5.4 Noch einmal: Zeitmessung
-
-
11.6 Die Klassen SimpleDateFormat und DateFormat
-
11.7 Die Collection-Klassen
-
11.7.1 „Sammlungen“ von Objekten – der Aufbau des Interface Collection
-
11.7.2 „Sammlungen“ durchgehen – der Aufbau des Interface Iterator
-
11.7.3 Mengen
-
11.7.3.1 Das Interface Set
-
11.7.3.2 Die Klasse HashSet
-
11.7.3.3 Das Interface SortedSet
-
11.7.3.4 Die Klasse TreeSet
-
11.7.4 Listen
-
11.7.4.1 Das Interface List
-
11.7.4.2 Die Klassen ArrayList und LinkedList
-
11.7.4.3 Suchen und Sortieren – die Klassen Collections und Arrays
-
11.7.5 Verkürzte Notation bei Collection-Datentypen
-
-
11.7.7 Assoziative Sammlungen mit Maps
-
-
11.8 Die Klasse StringTokenizer
-
12 Aufbau grafischer Oberflächen in Frames – von AWT nach Swing
-
12.1 Grundsätzliches zum Aufbau grafischer Oberflächen
-
12.2 Ein einfaches Beispiel mit dem AWT
-
12.3 Let's swing now!
-
12.4 Etwas „Fill-in“ gefällig?
-
12.5 Die AWT- und Swing-Klassenbibliothek im Überblick
-
-
13 Swing-Komponenten
-
13.1 Die abstrakte Klasse Component
-
13.2 Die Klasse Container
-
13.3 Die abstrakte Klasse JComponent
-
13.4 Layout-Manager, Farben und Schriften
-
13.4.1 Die Klasse Color
-
13.4.2 Die Klasse Font
-
13.4.3 Layout-Manager
-
13.4.3.1 Die Klasse FlowLayout
-
13.4.3.2 Die Klasse BorderLayout
-
13.4.3.3 Die Klasse GridLayout
-
13.5 Einige Grundkomponenten
-
13.5.1 Die Klasse JLabel
-
13.5.2 Die abstrakte Klasse AbstractButton
-
13.5.3 Die Klasse JButton
-
13.5.4 Die Klasse JToggleButton
-
13.5.5 Die Klasse JCheckBox
-
13.5.6 Die Klassen JRadioButton und ButtonGroup
-
13.5.7 Die Klasse JComboBox
-
13.5.8 Die Klasse JList
-
13.5.9 Die abstrakte Klasse JTextComponent
-
13.5.10 Die Klassen JTextField und JPasswordField
-
13.5.11 Die Klasse JTextArea
-
13.5.12 Die Klasse JScrollPane
-
13.5.13 Die Klasse JPanel
-
13.6 Spezielle Container, Menüs und Toolbars
-
13.6.1 Die Klasse JFrame
-
13.6.2 Die Klasse JWindow
-
13.6.3 Die Klasse JDialog
-
13.6.4 Die Klasse JMenuBar
-
13.6.5 Die Klasse JToolBar
-
-
14 Ereignisverarbeitung
-
14.1 Zwei einfache Beispiele
-
14.2 Programmiervarianten für die Ereignisverarbeitung
-
14.2.1 Innere Klasse als Listener-Klasse
-
14.2.2 Anonyme Klasse als Listener-Klasse
-
14.2.3 Container-Klasse als Listener-Klasse
-
14.2.4 Separate Klasse als Listener-Klasse
-
14.3 Event-Klassen und -Quellen
-
14.4 Listener-Interfaces und Adapter-Klassen
-
14.5 Listener-Registrierung bei den Event-Quellen
-
14.6 Auf die Plätze, fertig, los!
-
-
15 Einige Ergänzungen zu Swing-Komponenten
-
16 Parallele Programmierung mit Threads
-
16.1 Ein einfaches Beispiel
-
16.2 Threads in Java
-
16.3 Wissenswertes über Threads
-
16.4 Thread-Synchronisation und -Kommunikation
-
16.5 Threads in Swing-Anwendungen
-
16.5.1 Auf die Plätze, fertig, los!
-
16.5.2 Spielereien
-
16.5.3 Swing-Komponenten sind nicht Thread-sicher
-
-
17 Ein- und Ausgabe über I/O-Streams
-
17.1 Grundsätzliches zu I/O-Streams in Java
-
17.2 Dateien und Verzeichnisse – die Klasse File
-
17.3 Ein- und Ausgabe über Character-Streams
-
17.3.1 Einfache Reader- und Writer-Klassen
-
17.3.2 Gepufferte Reader- und Writer-Klassen
-
17.3.3 Die Klasse StreamTokenizer
-
17.3.4 Die Klasse PrintWriter
-
17.3.5 Die Klassen IOTools und Scanner
-
17.4 Ein- und Ausgabe über Byte-Streams
-
17.4.1 Einige InputStream- und OutputStream-Klassen
-
17.4.2 Die Serialisierung und Deserialisierung von Objekten
-
17.4.3 Die Klasse PrintStream
-
17.5 Streams im try-Block mit Ressourcen
-
17.6 Einige abschließende Bemerkungen
-
-
18 Client/Server-Programmierung in Netzwerken
-
19 Lambda-Ausdrücke, Streams und Pipeline-Operationen
-
20 Blick über den Tellerrand
-
20.1 JShell für kleine Skripte
-
20.2 Das Java-Modulsystem
-
20.3 Bühne frei für JavaFX
-
20.4 Beginn einer neuen Zeitrechnung
-
20.5 Webprogrammierung und verteilte Systeme
-
20.6 Zu guter Letzt