Hier finden Sie alle Beispielprogramme aus dem Buch. Suchen Sie einfach anhand des Inhaltsverzeichnisses die Stelle, an der sich das Programm im Buch befindet, und navigieren Sie über den Link in den entsprechenden Teil des Dokuments.
2.1 Mein erstes Programm | |
---|---|
Berechnung.java | Gibt die Summe zweier Zahlen auf dem Bildschirm aus |
2.2 Formeln, Ausdrücke und Anweisungen | |
---|---|
Aufgabe 2.2 | |
Uebung.java | Klasse Uebung |
3.1.10 Übungsaufgaben | |
---|---|
Aufgabe 3.3 | |
Berechnung.java | Klasse Berechnung |
3.2.2 Ausgaben auf der Konsole | |
---|---|
HalloWelt.java | Das wohl berühmteste Einsteiger-Programm der Programmiergeschichte |
3.2.4 Schöner programmieren in Java | |
---|---|
Unsorted.java | Dieses Programm ist ein Beispiel dafür, wie das Einhalten weniger Formatierungsregeln die Lesbarkeit von Code steigert |
Version 1 | Nicht formatierte Version |
Version 2 | Gemäss der Richtlinien überarbeitete Version |
3.2.6 Übungsaufgaben | |
---|---|
Aufgabe 3.5 | |
Strukturuebung.java | Klasse Strukturuebung |
3.3.1 Ganzzahlige Datentypen | |
---|---|
Longtst.java | Unzulässiger Versuch für eine Longzahl-Ausgabe |
3.3.1.1 Literalkonstanten in anderen Zahlensystemen | |
---|---|
BinaereLiterale.java | Diese Klasse arbeitet mit Litealkonstanten zu verschiedenen Basen |
3.3.1.2 Unterstrich als Trennzeichen in Literalkonstanten | |
---|---|
Unterstrich.java | Demonstration zur richtigen Verwendung von Unterstrichen in numerischen Literalen |
UnterstrichFalsch.java | Demonstration zur falschen Verwendung von Unterstrichen in numerischen Literalen |
3.3.2 Gleitkommatypen | |
---|---|
Floatdiv.java | Division bei Gleitkommazahlen |
Intdiv.java | Division bei ganzen Zahlen |
Version 1 | Division ohne Rest |
Version 2 | Division mit Rest |
3.4.1 Variablen | |
---|---|
StundenRechner.java | Berechnung des Arbeitslohns |
Version 1 | Ohne Verwendung von Variablen |
Version 2 | Mit Verwendung von Variablen |
3.4.4 Ein- und Ausgabe | |
---|---|
IOToolsTest.java | Beispielprogramm für die Eingabe über Tastatur |
3.4.4.1 Statischer Import der IOTools-Methoden | |
---|---|
IOToolsTestMitStaticImport.java | Beispielprogramm für die Eingabe über Tastatur (mit statischem Import der Methoden) |
3.4.6 Übungsaufgaben | |
---|---|
Aufgabe 3.11 | |
Plus.java | Klasse Plus |
Aufgabe 3.14 | |
Raviolita.java | Klasse Raviolita |
3.5.3.2 Die switch-Anweisung | |
---|---|
StringSwitchDemo.java | Diese Klasse demonstriert den Einsatz von Strings in der switch-Anweisung |
3.5.7 Übungsaufgaben | |
---|---|
Aufgabe 3.18 | |
BreakAndContinue.java | Klasse BreakAndContinue |
Aufgabe 3.22 | |
Falsch.java | Klasse Falsch |
Aufgabe 3.23 | |
Irgendwas.java | Klasse Irgendwas |
4.1 Felder | |
---|---|
UmstaendlicherKalender.java | Dieses Programm zeigt, wie ein Terminkalender ohne Verwendung von Feldern nur schwer programmiert werden kann |
4.1.3 FelderunbekannterLänge | |
---|---|
Swap.java | Vertauscht ein Feld von Zahlen |
4.1.4 Referenzen | |
---|---|
Doppel.java | Das Programm verdoppelt eine einzelne Zahl |
DoppelFeld.java | Das Programm verdoppelt ein Feld von Zahlen |
4.1.5 Ein besserer Terminkalender | |
---|---|
BessererKalender.java | Kalenderprogramm unter Verwendung von Arrays |
4.1.6 Mehrdimensionale Felder | |
---|---|
MonatsKalender.java | Das Kalenderprogramm, gültig für einen ganzen Monat |
4.1.9 Vereinfachte for-Schleifen-Notation | |
---|---|
MehrSchleifen.java | Traditionelle und neue, vereinfachte Schleifen-Notation mehrdimensional |
Schleifen.java | Traditionelle und neue, vereinfachte Schleifen-Notation eindimensional |
4.2.1 Willkommen in der ersten Klasse! | |
---|---|
Adresse.java | Eine einfache Klasse zum Speichern einer Adresse |
4.2.3 Ein erstes Adressbuch | |
---|---|
AdressBuch_v1.java | Eine einfache Adressverwaltung für nur eine Adresse |
4.2.4 Klassen als Referenzdatentyp | |
---|---|
AdressBuch_v2.java | Eine einfache Adressverwaltung für zwei Adressen |
4.2.5 Felder von Klassen | |
---|---|
AdressBuch_v3.java | Eine einfache Adressverwaltung für zwanzig Adressen |
4.2.8 Übungsaufgaben | |
---|---|
Aufgabe 4.6 | |
Adresse.java | Klasse Adresse |
Aufgabe 4.7 | |
Komponente.java | Klasse Komponente |
Referenzen.java | Klasse Referenzen |
5 Methoden, Unterprogramme | |
---|---|
Eval.java | Beispielprogramm zur Berechnung einer einfachen Formel |
Version 1 | Anfangs ist das Programm noch recht übersichtlich |
Version 2 | Bei mehreren Berechnungsläufen wird es aber schnell unübersichtlich |
5.1.4 Aufruf von Methoden | |
---|---|
AufrufTest.java | Was passiert, wenn wir den Inhalt von übergebenen Parametern in der Methode abändern? |
5.1.6 Variable Argumentanzahl bei Methoden | |
---|---|
Argumente.java | Summationsmethode mit variabler Argumentliste |
5.1.7 Vorsicht, Falle: Referenzen als Parameter | |
---|---|
AufrufTest2.java | Vorsicht Falle: Übergabe von Arrays an Methoden |
AufrufTest3.java | Explizites Kopieren von Feldinhalten |
5.1.8 Sichtbarkeit und Verdecken von Variablen | |
---|---|
VerdeckenTest.java | Verdecken von Variablen beim Methodenaufruf |
5.1.10 Übungsaufgaben | |
---|---|
Aufgabe 5.3 | |
BooleanMethods | Klasse BooleanMethods |
5.2.1 Motivation | |
---|---|
Unendlichkeit.java | Was passiert, wenn Methoden sich selbst aufrufen? |
5.2.2 Gute und schlechte Beispiele für rekursive Methoden | |
---|---|
IndirekteRekursion.java | Beispiel für Endlosrekursion |
5.3.1 Kommandozeilenparameter | |
---|---|
GrussWort.java | Das Programm liest Kommandozeilenparameter aus und verwertet sie in einem Gruss |
5.3.4 Übungsaufgaben | |
---|---|
Aufgabe 5.6 | |
Signatur.java | Klasse Signatur |
5.4.1 Klassenmethoden | |
---|---|
MeineMethoden.java | Klasse, die Methoden bereitstellt |
TesteMethoden.java | Klasse, die die Methoden der Klasse verwendet |
5.4.3 Statischer Import | |
---|---|
StatischeImports.java | Klasse, die statisch importierte Math-Methoden benutzt |
5.5.1 Instanzmethoden | |
---|---|
Multiplizierer.java | Klasse mit Instanzvariable und Instanzmethode |
TesteMultiplizierer.java | Klasse, die Instanzmethoden von verschiedenen Objekten einsetzt |
5.5.2 Die Methoden der Klasse java.lang.String | |
---|---|
StringTest.java | Einige Beispiele für den Umgang mit Strings |
5.6 Übungsaufgaben | |
---|---|
Aufgabe 5.9 | |
Tausche.java | Klasse Tausche |
6.3.2 Vererbung | |
---|---|
FaxAdresse.java | Erweiterung des Adress-Objektes |
7.1 Vom Referenzdatentyp zur Objektorientierung | |
---|---|
Student.java | Studenten-Klasse, erster Versuch |
7.2.1 Zugriffsrechte | |
---|---|
Student.java | Aus Gründen der Kapselung wurden die Instanzvariablen auf private gesetzt |
7.2.2 Was sind Instanzmethoden? | |
---|---|
Student.java | Der Zugriff auf private Bestandteile der Klasse wird durch Methoden gekapselt |
7.2.3 Instanzmethoden zur Validierung von Eingaben | |
---|---|
Student.java | Die Matrikelnummer kann auf Gültigkeit geprüft werden |
7.2.4 Instanzmethoden als erweiterte Funktionalität | |
---|---|
Student.java | Die Klasse besitzt jetzt eine toString-Methode |
7.3.1 Klassenvariablen und -methoden | |
---|---|
Student.java | Neuer Bestandteil: ein Instanzzähler |
7.3.2 Klassenkonstanten | |
---|---|
Student.java | Konstanten definieren die Studienfächer |
7.4.1 Konstruktoren | |
---|---|
Student.java | Neu: ein selbstdefinierter argumentloser Konstruktor |
7.4.2 Überladen von Konstruktoren | |
---|---|
Student.java | Die Studenten-Klasse, diesmal mit zwei Konstruktoren |
Version 1 | Beide Konstruktoren sind unabhängig voneinander definiert |
Version 2 | Ein Konstruktor setzt mit Hilfe des Schlüsselwortes this auf dem anderen auf |
7.4.3 Der statische Initialisierer | |
---|---|
Student.java | Das Phantom der Uni - erzeugt durch einen statischen Initialisierer |
7.4.4 Der Mechanismus der Objekterzeugung | |
---|---|
Sub.java | Subklasse für den Test der Aufrufreihenfolge beim Erzeugen von Objekten |
Super.java | Superklasse für den Test der Aufrufreihenfolge beim Erzeugen von Objekten |
7.6 Übungsaufgaben | |
---|---|
Aufgabe 7.3 | |
KarlsruherStudent.java | Klasse KarlsruherStudent |
Aufgabe 7.4 | |
Klang.java | Klasse Klang |
Krach.java | Klasse Krach |
Musik.java | Klasse Musik |
Aufgabe 7.5 | |
Fuchs.java | Klasse Fuchs |
Hund.java | Klasse Hund |
Katze.java | Klasse Katze |
Maus.java | Klasse Maus |
Ratte.java | Klasse Ratte |
Aufgabe 7.6 | |
TestZwei.java | Klasse TestZwei |
Aufgabe 7.7 | |
Fehler1.java | Klasse Fehler1 |
Fehler2.java | Klasse Fehler2 |
Fehler3.java | Klasse Fehler3 |
Fehler4.java | Klasse Fehler4 |
Fehler5.java | Klasse Fehler5 |
Fehler6.java | Klasse Fehler6 |
Aufgabe 7.8 | |
TennisSpieler.java | Klasse TennisSpieler |
Aufgabe 7.10 | |
TestStrecke.java | Klasse TestStrecke |
Aufgabe 7.11 | |
AchJa.java | Klasse AchJa |
Aufgabe 7.12 | |
Patient.java | Klasse Patient |
Aufgabe 7.13 | |
Reifen.java | Klasse Reifen |
Aufgabe 7.15 | |
IntKlasse.java | Klasse IntKlasse |
KlassenTest.java | Klasse KlassenTest |
RefIntKlasse.java | Klasse RefIntKlasse |
Aufgabe 7.16 | |
Glasboden.java | Klasse Glasboden |
8.1.3 Ein erster Ansatz | |
---|---|
USDollar.java | Eine erste, konkrete Währung |
Waehrung.java | Diese Klasse stellt allgemein Geldwerte dar |
8.1.4 Eine Klasse für sich | |
---|---|
Yen.java | Die japanische Währung |
8.1.6 Vererbung verhindern durch final | |
---|---|
Kid.java | Test: Vererbung Verhindern durch final |
NoKidsPlease.java | Klasse zur Demonstration des Schutzes vor Vererbung |
8.1.7 Übungsaufgaben | |
---|---|
Aufgabe 8.1 | |
Euro.java | Klasse Euro |
8.2 Die super-Referenz | |
---|---|
NonsensDollar.java | Klasse mit einer völlig unsinnig überschriebenen Methode ;-) |
8.3.1 Dynamisches Binden | |
---|---|
Sohn.java | Test: Dynamisches Binden |
Vater.java | Test: Dynamisches Binden |
8.3.2 Überschreiben von Methoden verhindern durch final | |
---|---|
Kind.java | Test: Überschreiben von Methoden |
Papa.java | Test: Überschreiben von Methoden |
8.6.1 Einsatzszenarien am Beispiel | |
---|---|
Goldbarren.java | Ein simpler Wertgegenstand |
Kruegerrand.java | Eine Klasse, die sowohl Waehrung als auch Wertgegenstand ist |
Waehrung.java | Die Klasse Waehrung, erweitert um einige Methoden |
Wertgegenstand.java | Interface für einen Wertgegenstand |
8.6.2 Abstrakte Klassen im Detail | |
---|---|
Figur.java | Abstrakte Klasse für Figur-Objekte |
FigurBearbeitung.java | Demo-Klasse zum Einsatz von Figur-Objekten |
FigurenMain.java | Anwendungsprogramm für Figur-Objekte |
Kreis.java | Kreis als konkrete Tochter-Klasse von Figur |
RechtEckchen.java | RechtEckchen als konkrete Tochter-Klasse von Figur |
8.6.3 Interfaces im Detail | |
---|---|
Bewegen.java | Anwendungsprogramm für bewegliche Objekte |
Beweglich.java | Interface für bewegliche Objekte |
Klappbar.java | Interface für klappbare Objekte |
Kreis.java | Kreis als konkrete Tochter-Klasse von Figur für bewegliche Kreise |
Stuhl.java | Stuhl als Implementierung der beiden Interfaces |
Version 1 | Klasse für bewegliche Stühle |
Version 2 | Klasse für bewegliche und klappbare Stühle |
8.7.1 Deklaration von Default-Methoden | |
---|---|
Formel.java | Interface zur Berechnung einer einfachen Formel |
Version A | Eine Methode ohne Implementierung |
Version B | Zwei Methoden, eine davon mit Default-Implementierung |
FormelEins.java | Klasse, die das Formel-Interface implementiert |
FormelEinsRennen.java | Anwendungsprogramm zum Testen des Interface Formel |
Version A | Anwendungsprogramm, das mit Version A des Interface Formel arbeitet |
Version B | Anwendungsprogramm, das mit Version B des Interface Formel arbeitet |
8.7.2 Deklaration von statischen Methoden | |
---|---|
Formel.java | Interface zur Berechnung einer einfachen Formel |
Version C | Erweitertes Interface Formel (Variante C) mit statischer Methode |
FormelEinsRennen.java | Anwendungsprogramm zum Testen des Interface Formel |
Version C | Anwendungsprogramm, das mit Version C des Interface Formel arbeitet |
8.7.3 Auflösung von Namensgleichheiten bei Default-Methoden | |
---|---|
Konflikte.java | Interfaces und Klassen, zum Thema Namensgleichheiten bei Default-Methoden |
8.8.3 Innere Klassen | |
---|---|
EinsMitInnerenKlassen.java | Zwei Arten von inneren Klassen |
EinsMitInnerenKlassenDemo.java | Innere Klassen in anderen Klassen verwenden |
ErzeugeWerteTabellen.java | Anwendungsprogramm zum Tabellieren von Funktionswerten unter Einsatz von statischen inneren Klassen und einem Interface |
Funktion.java | Interface für Funktions-Objekte |
GeburtstageVerwalten.java | Anwendungsprogramm zur Verwaltung von Geburtstagen unter Einsatz von nicht-statischen inneren Klassen und einem Interface |
Menuepunkt.java | Interface für Menüpunkte-Objekte |
8.8.4 Anonyme Klassen | |
---|---|
ErzeugeWerteTabellen2.java | Anwendungsprogramm zum Tabellieren von Funktionswerten unter Einsatz von anonymen inneren Klassen und einem Interface |
GeburtstageVerwalten2.java | Anwendungsprogramm zur Verwaltung von Geburtstagen unter Einsatz von anonymen inneren Klassen und einem Interface |
8.10 Übungsaufgaben | |
---|---|
Aufgabe 8.9 | |
MetallPlatte.java | Klasse MetallPlatte |
Aufgabe 8.10 | |
Bildschirm.java | Klasse Bildschirm |
SpielFigur.java | Klasse SpielFigur |
Aufgabe 8.12 | |
Brot.java | Klasse Brot |
Mahlzeit.java | Klasse Mahlzeit |
Salat.java | Klasse Salat |
Sandwich.java | Klasse Sandwich |
Wurst.java | Klasse Wurst |
Aufgabe 8.13 a) | |
Auto.java | Klasse Auto |
AutoTest.java | Klasse AutoTest |
Fahrzeug.java | Klasse Fahrzeug |
Aufgabe 8.13 b) | |
AKlasse.java | Klasse AKlasse |
CKlasse.java | Klasse CKlasse |
Elchtest.java | Klasse Elchtest |
Aufgabe 8.14 | |
A.java | Klasse A |
ABCD.java | Klasse ABCD |
B.java | Klasse B |
C.java | Klasse C |
D.java | Klasse D |
Aufgabe 8.15 | |
Point.java | Klasse Point |
9 Exceptions und Errors | |
---|---|
Excep1.java | Ein sehr einfaches Programm, welches aber bereits eine Exception produzieren kann |
9.1.3 Abfangen von Exceptions | |
---|---|
Excep2.java | Die bei Division durch 0 auftrende Exception wird abgefangen |
9.1.4 Ein Anwendungsbeispiel | |
---|---|
LiesAusDatei.java | Programm zum Lesen einzelner Zeichen aus einer Datei |
Version 1 | Komplett ohne Fehlerbehandlung |
Version 2 | Mit pauschaler Fehlerbehandlung |
Version 3 | Mit individueller Fehlerbehandlung |
9.1.5 Die RuntimeException | |
---|---|
Excep1.java | Ein sehr einfaches Programm, welches aber bereits eine Exception produzieren kann |
9.1.6 Übungsaufgaben | |
---|---|
Aufgabe 9.2 | |
Exueb1.java | Klasse Exueb1 |
Exueb2.java | Klasse Exueb2 |
Exueb3.java | Klasse Exueb3 |
Exueb4.java | Klasse Exueb4 |
Exueb5.java | Klasse Exueb5 |
Exueb6.java | Klasse Exueb6 |
Exueb7.java | Klasse Exueb7 |
9.2.1 Definieren eigener Exceptions | |
---|---|
DigitException.java | Eigene Exception-Klasse zur Erkennung von Ziffern und Erzeugen entsprechender Exception |
LiesAusDatei_3.java | Klasse zum Auslesen einer Datei und Erkennen von Ziffern |
9.2.3 Vererbung und Exceptions | |
---|---|
PingException.java | Die Ping-Exception |
PingPong.java | Ein Programm, welches Exceptions auslöst |
Version 1 | Jede Exception wird in einem eigenen try-catch-Block behandelt |
Version 2 | Nur ein try-catch-Block für alle drei Exceptions |
PingPongException.java | Die PingPong-Exception |
PongException.java | Die Pong-Exception |
9.2.4 Vorsicht, Falle! | |
---|---|
PingPong.java | Ein Programm, welches Exceptions auslöst |
Version 3 | Die PingPongException wird vor der PongException gefangen |
Version 4 | Die PongException wird vor der PingPongException gefangen |
9.2.5 Der finally-Block | |
---|---|
PingPong.java | Ein Programm, welches Exceptions auslöst |
Version 5 | Alle Exceptions ausser der PongException werden weitergeleitet |
Version 6 | Das Betreten und verlassen des "kritischen Bereichs" wird durch Ausgaben auf die Konsole gekennzeichnet |
Version 7 | Die Meldung des »Verlassens« wandert in den try-Block |
Version 8 | Die Meldung des »Verlassens« wird dupliziert: sie steht sowohl im catch-Block als auch nach der try-catch-Anweisung |
Version 9 | Die wahrhaft elegante Lösung: die Ausgabe erscheint im finally-Block |
9.2.8 Übungsaufgaben | |
---|---|
Aufgabe 9.4 | |
Exueb8.java | Klasse Exueb8 |
9.3.1 Zusicherungen im Programmcode | |
---|---|
AssertionTest.java | Methode kehrwert mit einer Zusicherung |
9.4 Mehrere Ausnahmetypen in einem catch-Block | |
---|---|
Wurzel.java | Programm mit herkömmlichem Exception-Handling |
WurzelMultiCatch.java | Programm mit Exception-Handling für zwei Ausnahme-Typen in einem catch-Block |
10.1.1 Deklaration eines Aufzählungstyps | |
---|---|
typen | Paket typen |
Jahreszeit.java | Die vier Jahreszeiten als enum-Typ |
10.1.2 Instanzmethoden der enum-Objekte | |
---|---|
Aufzaehlungen.java | Verwendung des Jahreszeiten-enum-Typs |
10.1.3 Selbstdefinierte Instanzmethoden für enum-Objekte | |
---|---|
Enumerations.java | Verwendung des Noten-Typs |
typen | Paket typen |
Noten.java | Die Noten auf der Klavier-Tastatur |
10.1.4 Übungsaufgaben | |
---|---|
Aufgabe 10.1 | |
StudentenTest.java | Klasse StudentenTest |
Aufgabe 10.2 | |
StudentenTest2.java | Klasse StudentenTest2 |
Aufgabe 10.3 | |
EsWarEinmal.java | Klasse EsWarEinmal |
10.2.1 Herkömmliche Generizität | |
---|---|
Ohrring.java | Simple Klasse fuer Ohrring-Objekte |
Paar.java | Klasse für Paare vom Typ Object |
PaarTest1.java | Testprogramm 1 fuer die Paar-Klasse |
PaarTest2.java | Testprogramm 2 fuer die Paar-Klasse |
Socke.java | Simple Klasse fuer Socken-Objekte |
10.2.2 Generizität durch Typ-Parameter | |
---|---|
GenPaar.java | Generische Paar-Klasse |
GenPaarTest1.java | Tesprogramm 1 für die generische Paar-Klasse |
GenPaarTest2.java | Tesprogramm 2 für die generische Paar-Klasse |
10.2.3 Einschränkungen der Typ-Parameter | |
---|---|
Hemd.java | Simple Klasse für Hemden-Objekte |
Hose.java | Simple Klasse für Hosen-Objekte |
Kleidung.java | Simple Klasse für Kleidungs-Objekte |
TollesPaar.java | Generische Paar-Klasse mit eingeschraenktem Typ-Parameter |
TollesPaarTest.java | Testprogramm für die Klasse TollesPaar |
10.2.4 Wildcards | |
---|---|
TollesPaarTestWild1.java | Testprogramm ohne Wildcards fuer die Klasse TollesPaar |
TollesPaarTestWild2.java | Testprogramm mit Wildcards fuer die Klasse TollesPaar |
10.2.5 Bounded Wildcards | |
---|---|
GenPaarTestWild1.java | Testprogramm 1 für die GenPaar-Klasse mit Bounded Wildcard |
GenPaarTestWild2.java | Testprogramm 2 für die GenPaar-Klasse mit Bounded Wildcard |
GenPaarTestWild3.java | Testprogramm 3 für die GenPaar-Klasse mit Bounded Wildcard |
Jeans.java | Simple Klasse fuer Jeans-Objekte |
10.2.6 Generische Methoden | |
---|---|
GenPaarTest3.java | Testprogramm mit generischen Methoden |
GenPaarTest5.java | Testprogramm mit generischen Methoden und eingeschränkten Typ-Parametern |
10.2.7 Verkürzte Notation bei generischen Datentypen | |
---|---|
GPaar.java | Generischer Datentyp für die Beispielprogramme |
GPaarDemo.java | Bisherige Notation beim Einsatz generischer Datentypen |
GPaarDiamondDemo.java | Verkürzte Notation beim Einsatz generischer Datentypen |
GPaarDiamondFalsch.java | Unzulässige Verwendung der verkürzten Notation beim Einsatz generischer Datentypen |
10.2.9 Übungsaufgaben | |
---|---|
Aufgabe 10.4 | |
TierKaefig.java | Klassen für Aufgabe 10.4 |
Aufgabe 10.5 | |
Tierleben.java | Klassen und Interfaces für Aufgabe 10.5 |
Aufgabe 10.6 | |
RateMal.java | Klasse RateMal |
Aufgabe 10.7 | |
Konzert.java | Klassen für Aufgabe 10.7 |
10.3 Sortieren von Feldern und das Interface Comparable | |
---|---|
Ring.java | Klasse zur Darstellung von Ringobjekte, die nach ihrer Groesse sortiert werden koennen |
RingDemo.java | Testprogramm zur zufaelligen Erzeugung und Sortierung von zehn Ringen |
11.1.1 Arbeiten mit String-Objekten | |
---|---|
StringRefs.java | Diese Klasse stellt String-Objekte als Referenzdatentyp vor |
11.2.1 Arbeiten mit "eingepackten" Daten | |
---|---|
WrapperBeispiel.java | Diese Klasse zeigt die Funktionsweise von Wrapperklassen |
11.2.3 Ein Anwendungsbeispiel | |
---|---|
Summiere.java | Diese Klasse stellt ein Summations-Programm dar |
11.2.4 Automatische Typwandlung für die Wrapper-Klassen | |
---|---|
AutoBoxing.java | Verwendung von Wrapper-Objekten mit AutoBoxing |
AutoBoxingDangers.java | Gefahren bei der Verwendung von Wrapper-Objekten |
Boxing.java | Verwendung von Wrapper-Objekten mit explizitem Boxing |
11.3.1 Arbeiten mit langen Ganzzahlen | |
---|---|
QuadrierungBigInt.java | Diese Klasse ist ein modifiziertes Quadrierungsprogramm |
QuadrierungLong.java | Diese Klasse quadriert die Zahl 16 mehrfach |
11.3.4 Arbeiten mit langen Gleitkommazahlen | |
---|---|
ProduktSummeBigDec.java | Diese Klasse korrigiert Fehler der Klasse ProduktSummeDouble |
ProduktSummeDouble.java | Diese Klasse gibt bei der Rechnung mit Gleitkommazahlen einzelne Rechenschritte aus |
11.3.6 Viele Stellen von Nullstellen gefällig? | |
---|---|
BigNewton.java | Näherungsweise Berechung der Nullstellen der Funktion sqrt(2) mit Hilfe des Newton-Verfahrens |
11.4.1 Standardausgaben in Java | |
---|---|
StandardFormat.java | Diese Klasse zeigt wie man das Ausgabeformat von double- Werten beeinflussen kann |
11.4.2 Arbeiten mit Format-Objekten | |
---|---|
MyFormats.java | Diese Klasse zeigt an weiteren Beispielen "selbst gemachte" Formate zur Ausgabe von numerischen Werten |
11.4.3 Vereinfachte formatierte Ausgabe | |
---|---|
Ausgaben.java | Formatierte Ausgabe mit printf |
11.5.2 Auf die Plätze, fertig, los! | |
---|---|
Stoppuhr.java | Diese Klasse realisiert eine einfache Stoppuhr |
11.5.3 Spezielle Calendar-Klassen | |
---|---|
CalArith.java | Diese Klasse gibt "Zeitpunkte" aus |
11.5.4 Noch einmal: Zeitmessung | |
---|---|
CalStoppuhr.java | Diese Klasse ist eine alternative Version der "einfachen Stoppuhr" und arbeitet mit "Zeitpunkten" |
11.6.1 Arbeiten mit Format-Objekten für Datum/Zeit-Angaben | |
---|---|
MyDateFormats.java | Diese Klasse gibt noch einige weitere Beispiele für "selbst gestrickte" Formate zur Ausgabe von Zeitangaben |
MyStandardDateFormats.java | Diese Klasse gibt noch einige Beispiele für Standard-Formate zur Ausgabe von Zeitangaben |
11.7.3.2 Die Klasse HashSet | |
---|---|
ZahlenMenge.java | Diese Klasse zeigt die Verwendung einer Collection vom Typ HashSet |
11.7.3.4 Die Klasse TreeSet | |
---|---|
SortierteZahlenMenge.java | Diese Klasse zeigt die Verwendung einer Collection vom Typ TreeSet |
11.7.4.2 Die Klassen ArrayList und LinkedList | |
---|---|
ZahlenListe.java | Diese Klasse zeigt die Anwendung der List- Klassen am Beispiel der Klasse ArrayList |
11.7.4.3 Suchen und Sortieren - die Klassen Collections und Arrays | |
---|---|
SortierteZahlenListe.java | Diese Klasse demonstriert die Anwendung der Klasse Collections |
11.7.5 Verkürzte Notation bei Collection-Datentypen | |
---|---|
ListDiamondDemo.java | Verkürzte Schreibweise für den Diamond-Operator |
ListDiamondFalsch.java | Hier kann Java den vollständigen Datentyp nicht ableiten |
11.8 Die Klasse StringTokenizer | |
---|---|
StringTokens.java | Diese Klasse ist ein Beispielprogramm zur Verwendung von StringTokenizer- Objekten |
12.2 Ein einfaches Beispiel mit dem AWT | |
---|---|
FrameOhneInhaltAWT.java | Diese Klasse erzeugt einen Frame mit den Mitteln des AWT- Paketes |
12.3 Let’s swing now! | |
---|---|
FrameOhneInhalt.java | Diese Klasse erzeugt einen Swing- Frame mit den von uns benötigten Erweiterungen |
FrameOhneInhaltSwing.java | Diese Klasse erzeugt einen Frame mit den Mitteln von Swing- Klassen |
12.4 Etwas "Fill-in" gefällig? | |
---|---|
FrameMitText.java | Diese Klasse erzeugt einen Frame mit Text |
13.3 Die abstrakte Klasse JComponent | |
---|---|
FrameMitTextUndToolTip.java | Diese Klasse macht nichts anderes als ihr Name verspricht |
13.4.1 Die Klasse Color | |
---|---|
FarbigesLabel.java | Diese Klasse kann ein farbiges Label darstellen |
FrameMitSchwarzemLabel.java | Diese Klasse macht nichts anderes als ihr Name verspricht |
13.4.2 Die Klasse Font | |
---|---|
FrameMitMonospacedText.java | Diese Klasse macht nichts anderes als ihr Name verspricht |
13.4.3.1 Die Klasse FlowLayout | |
---|---|
FrameMitFlowLayout.java | Diese Klasse macht nichts anderes als ihr Name verspricht |
13.4.3.2 Die Klasse BorderLayout | |
---|---|
FrameMitBorderLayout.java | Diese Klasse macht nichts anderes als ihr Name verspricht |
13.4.3.3 Die Klasse GridLayout | |
---|---|
FrameMitGridLayout.java | Diese Klasse macht nichts anderes als ihr Name verspricht |
13.5.1 Die Klasse JLabel | |
---|---|
FrameMitBild.java | Diese Klasse macht nichts anderes als ihr Name verspricht |
babycat.jpg | Im Programm verwendetes Bild, muss im gleichen Verzeichnis wie das Programm liegen! |
13.5.3 Die Klasse JButton | |
---|---|
FrameMitButtons.java | Diese Klasse macht nichts anderes als ihr Name verspricht |
13.5.4 Die Klasse JToggleButton | |
---|---|
FrameMitToggleButtons.java | Diese Klasse macht nichts anderes als ihr Name verspricht |
13.5.5 Die Klasse JCheckBox | |
---|---|
FrameMitCheckBoxes.java | Diese Klasse macht nichts anderes als ihr Name verspricht |
13.5.6 Die Klassen JRadioButton und ButtonGroup | |
---|---|
FrameMitRadioButtons.java | Diese Klasse macht nichts anderes als ihr Name verspricht |
13.5.7 Die Klasse JComboBox | |
---|---|
FrameMitComboBoxes.java | Diese Klasse macht nichts anderes als ihr Name verspricht |
13.5.8 Die Klasse JList | |
---|---|
FrameMitListe.java | Diese Klasse macht nichts anderes als ihr Name verspricht |
13.5.10 Die Klassen JTextField und JPasswordField | |
---|---|
FrameMitTextFeldern.java | Diese Klasse macht nichts anderes als ihr Name verspricht |
13.5.11 Die Klasse JTextArea | |
---|---|
FrameMitTextArea.java | Diese Klasse macht nichts anderes als ihr Name verspricht |
13.5.12 Die Klasse JScrollPane | |
---|---|
FrameMitScrollText.java | Diese Klasse macht nichts anderes als ihr Name verspricht |
13.5.13 Die Klasse JPanel | |
---|---|
FrameMitPanels.java | Diese Klasse macht nichts anderes als ihr Name verspricht |
babycatSmall.jpg | Im Programm verwendetes Bild, muss im gleichen Verzeichnis wie das Programm liegen! |
13.6.3 Die Klasse JDialog | |
---|---|
TopLevelContainer.java | Diese Klasse demonstriert die Anwendung der drei Fenster-Arten Frame, Window und Dialog |
13.6.5 Die Klasse JToolBar | |
---|---|
FrameMitMenuBar.java | Diese Klasse macht nichts anderes als ihr Name verspricht |
images | Unterverzeichnis mit den Grafiken für das Programm |
blau.gif | Blaues Kästchen |
gruen.gif | Grünes Kästchen |
rot.gif | Rotes Kästchen |
13.7 Übungsaufgaben | |
---|---|
Aufgabe 13.1 | |
VierButtonFrame.java | Klasse VierButtonFrame |
Aufgabe 13.3 | |
NotenEingabe.java | Klasse NotenEingabe |
14.1.1 Zufällige Grautöne als Hintergrund | |
---|---|
Farbwechsel.java | Diese Klasse erzeugt ein Swing-Fenster mit einem Button, der in der Lage ist die Hintergrundfarbe des Frames zufällig zu ändern |
14.1.2 Ein interaktiver Bilderrahmen | |
---|---|
Bilderrahmen.java | Diese Klasse erzeugt ein Swing-Fenster mit einem Meüe, einer Toolbar und einem Label mit Iconimage |
images | Grafiken, die vom Beispielprogramm benötigt werden |
blau.gif | Blauer Rahmen |
gruen.gif | Grüner Rahmen |
rot.gif | Roter Rahmen |
cat.gif | Katze |
dog.gif | Hund |
mouse.gif | Maus |
14.2.2 Anonyme Klasse als Listener-Klasse | |
---|---|
Farbwechsel2.java | Diese Klasse ist eine Version unserer Farbwechsel- Klasse, allerdings mit anonymer Listener- Klasse |
14.2.3 Container-Klasse als Listener-Klasse | |
---|---|
Farbwechsel3.java | Diese Klasse ist eine Version der Farbwechsel- Klasse, die nun selbst eine Listener- Klasse ist |
14.2.4 Separate Klasse als Listener-Klasse | |
---|---|
ButtonListener.java | Diese Klasse ist ein Beispiel für eine eigenständige Listener- Klasse |
Farbwechsel4.java | Diese Klasse benutzt die Listener- Klasse ButtonListener |
14.4 Listener-Interfaces und Adapter-Klassen | |
---|---|
CloseToggleButtons.java | Diese Klasse erzeugt ein Swing-Fenster mit zwei Toggle-Buttons, die zum Schließen des Fensters aktiviert sein müssen |
14.5 Listener-Registrierung bei den Event-Quellen | |
---|---|
LookAndFeel.java | Diese Klasse erzeugt ein Swing-Fenster, das mit Buttons und Combo-Box sein Look and feel ändern kann |
14.6 Auf die Plätze, fertig, los! | |
---|---|
StoppuhrFrame.java | Diese Klasse erzeugt ein Swing-Fenster mit Stoppuhrfunktion |
14.7 Übungsaufgaben | |
---|---|
Aufgabe 14.6 | |
EuroConverter.java | Klasse EuroConverter |
15.1.3 Die abstrakte Klasse Graphics | |
---|---|
ZeichenPanel.java | Diese Klasse ist eine spezielle JPanel-Klasse mit verschiedenen Graphics- Methoden |
Zeichnung.java | Diese Klasse erzeugt ein Swing-Fenster mit einer Zeichnung |
15.1.4 Ein einfaches Zeichenprogramm | |
---|---|
PunkteVerbinden.java | Diese Klasse erzeugt ein Swing-Fenster mit einem Zeichenbrett |
Zeichenbrett.java | Diese Klasse ist eine spezielle JPanel-Klasse für unser Zeichenbrett |
15.1.5 Layoutveränderungen und der Einsatz von revalidate | |
---|---|
NewButtonFrame1.java | Diese Klasse erzeugt ein Swing-Fenster, das sich wie erwartet verhält |
NewButtonFrame2.java | Diese Klasse erzeugt ein Swing-Fenster und demonstriert die Funktion von validate(), invalidate() und revalidate() |
15.3 Übungsaufgaben | |
---|---|
Aufgabe 15.2 | |
GeoObjekt.java | Interface GeoObjekt |
16.1 Ein einfaches Beispiel | |
---|---|
ABCPrinter.java | Diese Klasse gibt das Alphabet aus |
ABCThread.java | Diese Klasse gibt auch das Alphabet aus, ist jedoch ein Thread |
MehrmalsP.java | Diese Klasse führt zweimal hintereinander die run- Methode der ABCPrinter- Klasse aus |
MehrmalsT.java | Diese Klasse führt zweimal hintereinander die run- Methode der ABCThread- Klasse aus |
16.2.1 Die Klasse Thread | |
---|---|
MachMal.java | Diese Klasse macht eine Sekunde lang gar nichts |
TVProgAuslosung.java | Diese Klasse lost zwischen versch TV- Programmen |
TVProgThread.java | Diese Klasse stellt die Funktionalität unserer Programmauslosung als Thread dar |
16.2.2 Das Interface Runnable | |
---|---|
ABCRunnable.java | Diese Klasse gibt das Alphabet aus und implementiert das Runnable- Interface |
MehrmalsR.java | Diese Klasse führt zweimal hintereinander die run- Methode der ABCRunnable- Klasse aus |
TVProgAuslosungMitRunnable.java | Diese Klasse lost zwischen versch TV- Programmen |
TVProgRunnable.java | Diese Klasse stellt die Funktionalität unserer Programmauslosung dar und implementiert das Runnable- Interface |
16.2.3 Threads vorzeitig beenden | |
---|---|
StoppuhrMitThread.java | Diese Klasse realisiert eine Stoppuhr mit sich aktualisierender Uhrzeit |
UhrzeitThread.java | Diese Klasse gibt Sekundenweise die aktuelle Uhrzeit zurück |
16.4.1 Das Leser/Schreiber-Problem | |
---|---|
Figur.java | Diese abstrakte Klasse stellt eine Schachfigur dar |
FigurenThreads.java | Demonstration des Leser/Schreiber-Problems |
Version 1 | In dieser Version besteht das Problem |
Version 2 | In dieser Version wird das Problem gelöst |
GuteFigur.java | In dieser Klasse ist das Problem gelöst |
Leser.java | Diese Klasse stellt unseren Leser dar |
SchlechteFigur.java | Diese Klasse führt bei Verwendung zu Problemen |
Schreiber.java | Diese Klasse stellt unseren Schreiber dar |
16.4.2 Das Erzeuger/Verbraucher-Problem | |
---|---|
EVTest1.java | Diese Klasse ist ein Testprogramm zur Demonstration des Erzeuger/Verbraucher-Problems |
EVTest2.java | Diese Klasse demonstriert die Lösung des Erzeuger/Verbraucher-Problems |
EVTest3.java | Diese Klasse demonstriert die Deadlock-Situation |
Erzeuger.java | Diese Klasse erzeugt einen int-Wert |
GuterWert.java | In dieser Klasse ist das Problem gelöst |
KlemmWert.java | Diese Klasse führt bei Verwendung zum Deadlock |
SchlechterWert.java | Diese Klasse führt bei Verwendung zu Problemen |
Verbraucher.java | Diese Klasse "verbraucht" einen int-Wert |
Wert.java | Diese abstrakte Klasse repräsentiert einen int-Wert |
16.5.1 Auf die Plätze, fertig, los! | |
---|---|
AnzeigeThread.java | Diese Klasse dient zur dynamischen Zeitanzeige |
StoppuhrFrameThread.java | Diese Klasse stellt eine inzwischen fast komplette SToppuhr zur Verfügung |
16.5.2 Spielereien | |
---|---|
AutomatFrame.java | Diese Klasse ist ein einfacher Spielautomat |
ColorRunLabel.java | Diese Klasse brauchen wir für die Label |
KnopfListener.java | Diese Klasse ist ein Listener der beim Druck auf einen Button eine veränderliche Label-Anzeige per Thread startet |
StartStopButton.java | Diese Klasse benötigen wir für die Knöpfe |
16.6 Übungsaufgaben | |
---|---|
Aufgabe 16.1 | |
KartenTerminal.java | Klasse KartenTerminal |
KonzertDaten.java | Klasse KonzertDaten |
UseTerminals.java | Klasse UseTerminals |
17.2 Dateien und Verzeichnisse - die Klasse File | |
---|---|
Create.java | Diese Klasse arbeitet mit File-Objekten |
17.3.1 Einfache Reader- und Writer-Klassen | |
---|---|
WriteToFile.java | Diese Klasse schreibt etwas in eine Datei |
17.3.2 Gepufferte Reader- und Writer-Klassen | |
---|---|
BufferedWriteToFile.java | Diese Klasse kann gepuffert etwas in eine Datei schreiben |
17.3.3 Die Klasse StreamTokenizer | |
---|---|
ZahlenSumme.java | Diese Klasse liest von der Tastatur eine Zeichenfolge ein um sie dann zu zerlegen und dabei die Zahlenwerte aufzusummieren und die Wörter aneinanderzuhängen |
17.3.4 Die Klasse PrintWriter | |
---|---|
PrintWriting.java | Diese Klasse kann mit Hilfe der print- Methode verschiedene Werte ausgeben |
17.3.5.1 Was machen eigentlich die IOTools? | |
---|---|
InTools.java | Diese Klasse zeigt wie die IOTools funktionieren |
17.3.5.2 Konsoleneingabe über ein Scanner-Objekt | |
---|---|
Eingaben.java | Konsolen-Eingabe unter Verwendung der Scanner-Klasse |
17.4.1 Einige InputStream- und OutputStream-Klassen | |
---|---|
DataWriteAndRead.java | Diese Klasse speichert elementare Werte in einer Datei und liest sie wieder ein |
17.4.2 Die Serialisierung und Deserialisierung von Objekten | |
---|---|
Datensatz.java | Diese Klasse demonstriert das Prinzip der Serialisierung |
ObjectRead.java | Diese Klasse schreibt Objekte |
ObjectWrite.java | Diese Klasse liest Objekte |
17.5 Streams im try-Block mit Ressourcen | |
---|---|
Kopiere.java | Beispielprogramm zum Kopieren einer Textdatei |
Klassisch | Umständliche Version mit manuellem Schließen der Datenströme |
Try-With-Resources | Vereinfachte Version mit automatischem Schließen der Datenströme |
ZeigeDateiInhalt.java | Beispielprogramm zur Ausgabe einer Textdatei |
Klassisch | Umständliche Version mit manuellem Schließen der Datenströme |
Try-With-Resources | Vereinfachte Version mit automatischem Schließen der Datenströme |
17.6.2.1 Das Interface Path und die Klasse Paths | |
---|---|
PathBeispiele.java | Zugriffe auf Dateisysteme-Pfade mittels Path und Paths |
17.6.2.2 Die Klasse Files | |
---|---|
DateiOperationen.java | Dateioperationen mit der Klase Files aus dem Paket java.nio.file |
18.1.2 IP-Adressen | |
---|---|
DNSAnfrage.java | Diese Klasse startet eine DNS- Anfrage |
18.2.2 Ein einfacher Server | |
---|---|
DateTimeProtokoll.java | Diese Klasse stellt das Protokoll für unseren Zeitserver zur Verfügung |
DateTimeServer.java | Diese Klasse realisiert einen einfachen Zeit- Server |
18.2.3 Ein einfacher Client | |
---|---|
DateTimeClient.java | Diese Klasse ist ein Client für unseren Zeitserver |
18.2.4 Ein Server für mehrere Clients | |
---|---|
DateTimeDienst.java | Diese Klasse stellt das Protokoll für unseren DateTimeMultiServer zur Verfügung |
DateTimeMultiServer.java | Diese Klasse ist kann mehrere Clienst gleichzeitig bedienen |
18.2.5 Ein Mehrzweck-Client | |
---|---|
MyClient.java | Diese Klasse ist ein Multifunktions- Client |
18.2.6 Client/Server-Kommunikation über URLs | |
---|---|
LiesURL.java | Diese Klasse liest den Text eines Webdokuments |
19.1.1 Lambda-Ausdrücke in Aktion - zwei Beispiele | |
---|---|
BuchstabenDruck.java | Klasse, die eine Klassenmethode drucke() bereitstellt |
ZaehlButton.java | Ereignisbehandlung mit anonymer Klasse |
ZaehlButtonMitLambda.java | Ereignisbehandlung mit Lambda-Ausdruck |
ZweiRunnables.java | Vergleich von Runnables mit anonymer Klasse und mit Lambda-Ausdruck |
19.1.3 Lambda-Ausdrücke und funktionale Interfaces | |
---|---|
Funktion1p.java | Funktionales Interface einer double-Methode mit einem Parameter |
Funktion2p.java | Funktionales Interface einer double-Methode mit zwei Parametern |
WerteTabellen.java | Beispiele für Anwendung von funktionalen Interfaces und Lambda-Ausdrücken |
19.1.4 Vordefinierte funktionale Interfaces und Anwendungen auf Datenstrukturen | |
---|---|
LambdaListenOperationen.java | Listen-Operationen mit Lambda-Ausdrücken |
WerteTabellenMitFunction.java | Beispiele für vordefinierte funktionale Interfaces und Lambda-Ausdrücke |
19.1.5 Methodenreferenzen als Lambda-Ausdrücke | |
---|---|
BuchstabenDruck.java | Klasse, die eine Klassenmethode drucke() bereitstellt |
BuchstabenDrucker.java | Klasse, die eine Instanzmethode drucke() bereitstellt |
LambdaListOpsMitMethRef.java | Methoden-Referenzen als Lambda-Ausdrücke |
ZweiRunnablesMitMethRef.java | Einsatz von statischen und nicht-statischen Methodenreferenzen |
19.1.6 Zugriff auf Variablen aus der Umgebung innerhalb eines Lambda-Ausdrucks | |
---|---|
VarZugriff.java | Zugriff auf Variablen innerhalb eines Lambda-Ausdrucks |
19.2.1 Streams in Aktion | |
---|---|
PipelineOperationen1.java | Demo-Programm 1 für Pipeline-Operationen auf Streams |
PipelineOperationen2.java | Demo-Programm 2 für Pipeline-Operationen auf Streams |
19.2.4 Die Stream-API | |
---|---|
PipelineFakultaet.java | Demo-Programm 1 zu Zwischen- und Abschlussoperationen der Stream-API |
PipelineFakultaetBigInt.java | Demo-Programm 2 zu Zwischen- und Abschlussoperationen der Stream-API |
19.2.5 Übungsaufgaben | |
---|---|
Aufgabe 19.3 | |
Pipeline1.java | Klasse Pipeline1 |
Aufgabe 19.4 | |
Pipeline2.java | Klasse Pipeline2 |
20.1 JShell für kleine Skripte | |
---|---|
HalloJShell.jsh | Hallo Welt für JShell |
Version 1 | Minimale Version mit nur einer Zeile |
Version 2 | Bessere Version mit Beenden von JShell am Ende |
Serien.jsh | Beispiel für ein größeres JShell-Skript ohne Klassen |
20.2 Das Java-Modulsystem | |
---|---|
Java-Modulsystem.zip | Alle Quellcodes als ZIP-Datei |
m_app | Verzeichnis des Moduls m_app |
app | Internes Paket app, das nur im Modul m_app verwendet werden kann |
Main.java | Anwendungsprogramm mit der main-Methode |
module-info.java | Modulbeschreibung für das Modul m_app |
m_rechner | Verzeichnis des Moduls m_rechner |
module-info.java | Modulbeschreibung für das Modul m_rechner |
rechner | Nach außen sichtbares Paket rechner |
Rechner.java | Die Klasse Rechner mit der Methode berechne |
intern | Internes Paket intern, das nur im Modul m_rechner verwendet werden kann |
Addition.java | Die interne Klasse für die Berechnung einer Addition |
Operand.java | Das Interface, das von den internen Rechnenklassen implementiert werden muss |
Subtraktion.java | Die interne Klasse für die Berechnung einer Subtraktion |
20.3 Bühne frei für JavaFX | |
---|---|
HalloJavaFX.java | Hallo Welt für JavaFX |
Version 1 | Komplett in Java geschrieben |
Version 2 | Mit ausgelagertem Stylesheet |
Version 3 | Mit ausgelagerter Layoutbeschreibung |
layout.fxml | Layoutbeschreibung für Version drei des Programms |
style.css | Stylesheet für Version zwei und drei des Programms |