2 Alles eine Typfrage – Variablen und grundlegende Datentypen
61
Variablen und Datentypen
62
Können wir Zahlen, bitte?
64
Lesbarkeit von langen Zahlen
67
Binär, oktal, dezimal und hexadezimal
69
Gute Namenswahl – Java Code Conventions
73
Dividieren und komplizieren
76
Genau rechnen mit BigDecimal
77
Ein bisschen mehr, nein, eher ein bisschen weniger
78
Konvertierung von Zahlen
80
Ein Charakter namens Cäsar
84
Nichts als die Wahrheit
86
Es kommt auf den Charakter an
95
4 Von Dinkelpfannekuchen und Buchstabensalat – Arbeiten mit Strings
135
Auf einzelne Zeichen zugreifen
138
Vergleichen von Strings
145
Gleich oder nicht gleich, oder doch teilweise gleich
147
Suchen und ersetzen in Strings
149
Noch was für Profis: Strings in den Pool werfen
157
Strings sind unveränderlich
161
Veränderbare Zeichenketten
162
Zeichen löschen, ersetzen und spiegeln
164
StringBuilder in Schleifen
166
Was du aus diesem Kapitel mitnehmen solltest
167
5 Objektiv betrachtet, eine ganz andere Klasse – Klassen, Objekte, Methoden
169
Der nächste Level der Wiederverwendung – Methoden
170
Kann ich das zurückgeben?
180
Zurück zu den Nachrichten
181
Auf dem Weg zum Java-Ninja – Klassen und Objekte
182
Der Fotoapparat unter der Lupe
191
Setter mit mehreren Parametern
192
Sichtbarkeit von Variablen und Methoden
196
Objekte in Strings umwandeln
202
Textuelle Beschreibung von Objekten
204
Nur für Profis – Zerlegen des Fotoapparats
207
Referenzdatentypen, Heap, Garbage-Collection
211
Wenn der Heap zu voll wird
213
Zuschauen, wie der Heap wächst
216
Wie alles zusammenhängt
224
6 Woher hat er das bloß? – Vererbung
232
Noch weniger doppelter Code dank Vererbung
234
Der Apfel fällt nicht weit vom Stamm
236
Verhalten anpassen durch Überschreiben von Methoden
237
Überschreiben verboten
239
Ich will aber zu Opa und Oma! Was ist mit der Großelternklasse?
242
Vererbung und Konstruktoren
244
Die Konstruktorkette wieder reparieren
245
Wie war das nochmal mit den Konstruktoren?
248
Erbt der Sohn vom Vater oder der Vater vom Sohn?
249
Welche Methode hätten’s denn gerne? Methoden überladen
255
Serviceorientiert vs. objektorientiert
258
Zurück zu den Objekten
259
Deutschland sucht den Knetsuperstar
261
7 Schnittstellen und andere leichte Verletzungen – Abstrakte Klassen und Interfaces
265
Digital oder analog? Hauptsache abstrakt!
270
Alles abstrakt, oder was?
278
Übungen zu Interfaces
284
Für die einen sind es Interfaces, …
286
Interfaces und Vererbung
287
Weniger ist manchmal mehr
289
Konstanten in Interfaces
290
Konstanten in Konstantenklassen
290
Konstanten über Enums
293
Interfaces – Wiederholung
294
Statische Memberklassen
295
Nichtstatische Memberklassen
297
Abstrakt und polymorph – alles klar, Schrödinger?
301
8 Hast du eigentlich einen Überblick über deine ganzen Schuhe? – Arrays, Collections & Maps
303
Ich will mehr davon – Beziehungen zu Katzen und andere Freundinnen
304
Ab in die nächste Dimension
307
Solche Schuhe hast du schon!
309
Alles muss man selber machen
310
Auf den Spuren der Objektgleichheit
312
Gleich ist gleich – oder doch nicht?
313
Arrays wachsen nicht mit
313
Solche Schuhe hast du immer noch!
317
Soll ich dir mal meine Schuhsammlung zeigen?
319
Der Iterator (hört sich krass an, oder?)
320
Einmal heißt einmal und dann keinmal mehr
322
Hash mich, ich bin der Frühling
323
Sets für den Schuhtester
327
Der richtige Hashcode
328
So viele Schuhe hast du schon
340
Kompakt und funktional: Lambda-Ausdrücke
345
filter(), map() und reduce()
347
Nochmal alles ganz lambsam
353
9 Ausnahmsweise und um ganz sicher zu gehen – Exceptions
355
Aus Fehlern werden Ausnahmen
356
Deine erste Exception
357
Das Werfen vorbereiten
358
Fangen will gelernt sein
360
Ganz zum Schluss – der finally-Block
362
Hier werden Sie individuell behandelt
363
Vererbung von Exceptions
365
Die Ausnahme als Auskunftsobjekt – was ist eigentlich passiert?
366
Information erwünscht, Abhängigkeit unerwünscht
368
Exceptions weiterwerfen
369
Wann und wie behandeln
370
Exceptions immer weiterleiten? Nicht immer der richtige Weg
371
Muss man nicht fangen – Unchecked Exceptions
373
Defensiv programmieren gegen Runtime-Exceptions
376
Lass den Türsteher mitloggen
378
Automatisches Schließen von Ressourcen
383
Ausnahmen bestätigen die Regel
386
11 Wilde Ströme – Eingabe und Ausgabe – Dateien, Streams und Serialisierung
415
Bossingen kommt mit Dateien
416
Willst du mehr? Probier’s binär!
417
Binärdateien schreiben – auch mit Byte-Streams
419
Megalangsam – Dateien kopieren mit normalen Streams
420
Viel schneller – Dateien kopieren mit Buffered Streams
421
Wer liest schon Bytes? Textdateien lesen mit Character-Streams
422
Textdateien schreiben mit Character-Streams
423
1:0 für den CSV – Textdateien umwandeln
424
Mit Kanonen auf Verzeichnisse schießen
427
Endlich Ordnung – Dateien und Verzeichnisse erstellen
428
Kundendaten konvertieren am Fließband
430
Gut gefiltert ist halb gewonnen – Verzeichnisse filtern
432
Auf dem richtigen Pfad: Die neue File-IO-API
433
Kundendateien konvertieren – jetzt noch einfacher
436
Geschachtelte Objekte speichern
441
Serialisierung und Deserialisierung beeinflussen
443
Individuelle Serialisierung mit writeObject() und readObject()
444
Der Nusskopf und die Kopfnuss
446
Nochmal alles zum mitstreamen
448
12 Nicht den Faden verlieren – Programmierung mit Threads
449
Night of the living thread
453
Das war gerade noch ungerade
454
Da krieg ich Zustände
457
Threads schlafen legen
458
Erst die geraden Zahlen, bitte!
466
Deadlocks finden und umgehen
469
Der Schlüssel zum Erfolg
471
Livelock, Starvation, Priorisierung und ein Bier
473
Warten und benachrichtigen
478
4000 gegen 2 oder Arbeit verteilen
483
Die Zusammenfassung, damit du nicht den Faden verlierst
487
14 Austauschschüler – das Datenaustauschformat XML
513
Ist es ein Element oder ein Attribut?
527
Der Spürhund – Simple API for XML
528
Der trainierte Spürhund oder „Don’t call me, I'll call you“ – StAX
532
Das Document Object Model …
535
1, 2 oder 3? SAX, StAX oder DOM? Was nehme ich wann?
543
Viele Wege führen nach Java
545
Von XML nach Java und wieder zurück
549
Die XTra, XPlizite, Xakte, XOrbitante Zusammenfassung
555
15 Datenspeicherung mit JDBC – Datenbanken
557
Relationale Datenbanken
558
Die erste Tabelle mit SQL
559
Eine Verbindung herstellen
563
Datensätze hinzufügen
565
Helden und Briefmarken
567
Anweisungen zusammenfassen
570
Was hätten’S denn gerne? Datensätze nach Kriterien auswählen
574
Daten sortiert ausgeben
576
Wer ist der Stärkste im ganzen Land?
577
Informationen aus mehreren Tabellen über Joins verknüpfen
581
Alles wieder zurück bitte – Transaktionen
582
Mapping zwischen relationalen Datenbanken und Java-Objekten
584
Roll zurück den Troll
585
SELECT DAS_WICHTIGSTE FROM KAPITEL_15
589
16 Neue Tanzschritte – GUI-Programmierung mit Swing und JavaFX
591
Mit Schwung weg von der Konsole – Swing
592
Alles im Rahmen – wie du GUI-Komponenten erstellst
592
Alles in Reih und Glied – wie du GUI-Komponenten anordnen kannst
595
Alles im Raster mit dem Grid-Layout
598
Zellen verbinden mit dem Grid-Bag-Layout
600
Schuhe in der Box … oder doch besser im Grid?
604
Ordnung: gut, Verhalten: … nichts? Wie du GUI-Komponenten das Verhalten hinzufügst
607
Validierung von Nutzereingaben mit Swing
611
Bunter und mehr Action mit JavaFX
616
Auf die große Bühne – JavaFX on stage
619
Noch mehr Zucker mit CSS
624
Das Verhalten hinzufügen
626
Validierung von Nutzereingaben mit JavaFX
627
Schiebereien mit JavaFX
628
Für Profis – Verhalten hinzufügen ohne Listener
629
Schieberegler mit Verhalten
631
Die Lösung für den Hardcore-Profi – Binding kann auch rechnen
632
Das Wichtigste zur Gesellenprüfung Maler und Lackierer, Fachbereich Swing und JavaFX
635
17 Schrödinger goes international – Internationalisierung, Lokalisierung, Formatierung, Pattern Matching und reguläre Ausdrücke
637
Den Nutzer lokalisieren
638
Die Software internationalisieren
641
Finnische Schuhkartons
643
Speak english per favore
646
Zahlen und Währungen formatieren
651
Datums- und Zeitangaben formatieren
652
Internationalisierte Textmeldungen formatieren
656
Das wurde aber auch Zeit – java.time
657
Zeitzone, Zeitlinie, Zeitpunkte und Zeitdauern
658
Ohne Zeitlinie – Datum, Zeit und Zeiträume
660
Zeitzonen und Zeitunterschiede
662
Alles nochmal auf einen Blick, so viel Zeit muss sein
663
Formatierung von Datums- und Zeitangaben
664
Formatieren über die Klasse String
665
Pattern Matching mit regulären Ausdrücken
668
Kein Anschluss unter dieser Nummer
673
Drin oder nicht drin? Keine Frage!
675
Auf einzelne Teile zugreifen über Gruppen
676
E-Mail-Adressen validieren
677
Tiivistelmä pääkohdista – das war Finnisch
679