Inhaltsverzeichnis

Alle Kapitel aufklappen
Alle Kapitel zuklappen
An den Leser
2
Schrödingers Büro
4
Schrödingers Werkstatt
6
Schrödingers Wohnzimmer
8
Impressum
10
Inhaltsverzeichnis
12
Vorwort
21
1 Hallo Schrödinger – Einführung und erstes Programm
23
Java überall
24
JRE, JDK, SE, EE, ME
24
Java installieren
25
Hallo Schrödinger
26
Kompilieren von Hand
27
Programm starten
30
Compiler und JVM unter der Lupe
31
Rätselstunde
32
Hexenstunde
33
Entwicklungsumgebungen
35
Eclipse herunterladen
35
Workspace und Workbench
36
Erstes Projekt
38
Pakete packen, aber ordentlich
41
Pakete anlegen leicht gemacht
43
Neue Klasse mit Eclipse
44
Miteinander reden
47
Streams
50
Let the game begin – das „World of Warcraft Textadventure“
52
Historie von Java
57
2 Alles eine Typfrage – Variablen und grundlegende Datentypen
61
Variablen und Datentypen
62
Arten von Datentypen
63
Können wir Zahlen, bitte?
64
Lesbarkeit von langen Zahlen
67
Zahlensuppe
68
Binär, oktal, dezimal und hexadezimal
69
Variablennamen
71
Gute Namenswahl – Java Code Conventions
73
Operationen
75
Dividieren und komplizieren
76
Genau rechnen mit BigDecimal
77
Ein bisschen mehr, nein, eher ein bisschen weniger
78
Rechenaufgaben
79
Konvertierung von Zahlen
80
Zeichen und Wunder
82
Ein Charakter namens Cäsar
84
Nichts als die Wahrheit
86
Vergleichsoperatoren
88
Sprich die Wahrheit
89
Wrapperklassen
91
Alles eine Typfrage
94
Es kommt auf den Charakter an
95
Wrap-up
96
3 Hier war ich doch schon mal! – Kontrollfluss
99
Kontrolle übernehmen
100
Wenn das Wörtchen „if“ nicht wär
100
Halb voll oder halb leer
101
Entweder oder
102
Aberglauben
103
Boolesche Operatoren
105
Hör auf, so zu klammern
105
Kurzschreibweise
106
Bedingungsoperator
107
Mehrere Fälle behandeln
107
Leere Lehre
109
Switch the String
110
Realitätsfern
111
Schleifen drehen
114
Schachtelung
117
Schleifen binden lernen
118
Primzahlen
118
King Schrödinger
122
Nochmal gaaanz langsam, bitte
125
Schleifen abbrechen
128
Labels
129
Kalender
130
Zusammenfassung – alles unter Kontrolle
134
4 Von Dinkelpfannekuchen und Buchstabensalat – Arbeiten mit Strings
135
Strings definieren
136
Auf einzelne Zeichen zugreifen
138
Strings zerlegen
139
Zeichen für Zeichen
142
Vergleichen von Strings
145
Teile vergleichen
145
Gleich oder nicht gleich, oder doch teilweise gleich
147
Suchen und ersetzen in Strings
149
Speiseplanhacker
151
Summertime
153
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
Refactoring
174
Sauberer Quelltext
178
Methodenkommentare
179
Kann ich das zurückgeben?
180
Zurück zu den Nachrichten
181
Auf dem Weg zum Java-Ninja – Klassen und Objekte
182
Kapselung
186
Setter und Getter
188
Der Fotoapparat unter der Lupe
191
Setter mit mehreren Parametern
192
Klassen vs. Objekte
194
Sichtbarkeit von Variablen und Methoden
196
Konstruktoren
198
Objekte in Strings umwandeln
202
Quelltext anhängen
203
Textuelle Beschreibung von Objekten
204
Fluent Interface
205
Nur für Profis – Zerlegen des Fotoapparats
207
Referenzdatentypen, Heap, Garbage-Collection
211
Wenn der Heap zu voll wird
213
Destruktoren …
214
Hab lieb den Heap
215
Zuschauen, wie der Heap wächst
216
Der Stack
222
Wie alles zusammenhängt
224
Die Katze war’s
226
Steap oder Hack
228
6 Woher hat er das bloß? – Vererbung
232
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
Blümchenvererbung
240
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
Typumwandlungen
252
Upcasting
253
Den Typ überprüfen
254
Welche Methode hätten’s denn gerne? Methoden überladen
255
Abo-Service
256
Serviceorientiert vs. objektorientiert
258
Zurück zu den Objekten
259
Die volle Überladung
260
Deutschland sucht den Knetsuperstar
261
Zusammenfassung
263
7 Schnittstellen und andere leichte Verletzungen – Abstrakte Klassen und Interfaces
265
Abstrakte Klassen
266
Abstrakte Methoden
268
Digital oder analog? Hauptsache abstrakt!
270
Alles abstrakt, oder was?
278
Schnittstellen
279
Ü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
Statischer Import
291
Statische Blöcke
292
Konstanten über Enums
293
Interfaces – Wiederholung
294
Noch mehr Klassen
295
Statische Memberklassen
295
Nichtstatische Memberklassen
297
Lokale Klassen
298
Anonyme Klassen
299
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
Objekte der Begierde
306
Ab in die nächste Dimension
307
Gib mir alles
308
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
Schuhkollektionen
315
Solche Schuhe hast du immer noch!
317
Soll ich dir mal meine Schuhsammlung zeigen?
319
Der Iterator (hört sich krass an, oder?)
320
Link und listig
321
Einmal heißt einmal und dann keinmal mehr
322
Hash mich, ich bin der Frühling
323
Sets für die Kripo
324
Sets für den Schuhtester
327
Der richtige Hashcode
328
Bäume und Räume
331
Größer oder kleiner?
333
Sortieren ohne Bäume
336
Sortierte Schuhe
338
Mappen raus
339
So viele Schuhe hast du schon
340
Schlangen im Keller
343
Hinten anstellen!
344
Kompakt und funktional: Lambda-Ausdrücke
345
filter(), map() und reduce()
347
High Heels!!!
351
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
Exceptions loggen
377
Lass den Türsteher mitloggen
378
Nicht mehr zu retten
380
Speicher voll
382
Automatisches Schließen von Ressourcen
383
Dateien lesen
384
Ausnahmen bestätigen die Regel
386
10 Ey Typ, du kummst hier nit rein! – Generics
389
Generische Typen
390
Bevor es Generics gab …
391
… und mit Generics
392
Hunde vs. Katzen
394
Katzenkorb als Unterklasse
395
Typisierte Interfaces
396
Wildcard-Typen – das Problem
397
Der nach oben beschränkte Wildcard-Typ
400
Der Haken: Schrödinger darf nicht schreiben
401
Der nach unten beschränkte Wildcard-Typ
404
Typisierte Methoden
406
Übungen zu Wildcards
407
Wiederholung
410
Kaffeesatz
413
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
Objekte speichern
438
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
Prozesse und Threads
450
Der erste Thread
452
Night of the living thread
453
Das war gerade noch ungerade
454
Da krieg ich Zustände
457
Threads schlafen legen
458
Helden, aufgepasst!
459
Auf andere warten
462
Synchronisierung
463
Erst die geraden Zahlen, bitte!
466
… Deadlocks!
467
Deadlocks finden und umgehen
469
Der Schlüssel zum Erfolg
471
Livelock, Starvation, Priorisierung und ein Bier
473
… Livelock
473
Prioritäten setzen
476
Warten und benachrichtigen
478
Starvation
480
Warten und schlafen
482
4000 gegen 2 oder Arbeit verteilen
483
Die Zusammenfassung, damit du nicht den Faden verlierst
487
13 Das kann sich doch schon sehen lassen! – Deployment, Dokumentation und Module
489
Abgepackt
490
Ich packe meine JAR-Datei …
493
Java Web Start
495
Bibliotheken einbinden in Eclipse
497
Hallo Onkel Doc – Dokumentation mit javadoc
500
Strukturiert und modularisiert
503
Modular? Na klar!
507
Module kompilieren
509
Jetzt hast du’s gepackt
511
14 Austauschschüler – das Datenaustauschformat XML
513
XML
514
Russische Salami
520
Musikschule mit XML
525
Ist es ein Element oder ein Attribut?
527
XML lesen
528
Der Spürhund – Simple API for XML
528
Der trainierte Spürhund oder „Don’t call me, I'll call you“ – StAX
532
Die Cursor-API
533
Die Iterator-API
533
Das Document Object Model …
535
Flower Power
538
XML schreiben
540
1, 2 oder 3? SAX, StAX oder DOM? Was nehme ich wann?
543
Viele Wege führen nach Java
545
JAXB
547
Von XML nach Java und wieder zurück
549
Power Flower
551
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
Gut vorbereitet
571
Daten auslesen
572
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
Wiederholung
588
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
Schuhschiebereien
612
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
Klassen laden
646
Wein oder Bier?
649
Zahlen und Währungen formatieren
651
Datums- und Zeitangaben formatieren
652
Währungsrechner
654
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
Mit Format
667
Pattern Matching mit regulären Ausdrücken
668
Kein Anschluss unter dieser Nummer
673
Teile finden
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
18 Bist du dir da sicher? Unit-Testen und Java Web Start continued – Unit-Tests
681
Deine Klassen testen
682
Test-Frameworks
683
Ich hatte aber einen Cocktail bestellt
690
Ausnahmefälle testen
694
Gar nicht eklig
696
Java Web Start continued
698
Das wichtigste unit to know
701
Index
705