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
28
Kompilieren von Hand
29
Programm starten
32
Compiler und JVM unter der Lupe
33
Rätselstunde
34
Hexenstunde
35
Entwicklungsumgebungen
37
Eclipse herunterladen
37
Workspace und Workbench
38
Erstes Projekt
40
Pakete packen, aber ordentlich
43
Pakete anlegen leicht gemacht
45
Neue Klasse mit Eclipse
46
Miteinander reden
48
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
VisualVM Eclipse installieren
215
Der Stack
224
Wie alles zusammenhängt
226
Die Katze war’s
228
Steap oder Hack
230
6 Woher hat er das bloß? – Vererbung
233
Vererbung
234
Noch weniger doppelter Code dank Vererbung
236
Der Apfel fällt nicht weit vom Stamm
238
Verhalten anpassen durch Überschreiben von Methoden
239
Überschreiben verboten
241
Blümchenvererbung
242
Ich will aber zu Opa und Oma! Was ist mit der Großelternklasse?
244
Vererbung und Konstruktoren
246
Die Konstruktorkette wieder reparieren
247
Wie war das nochmal mit den Konstruktoren?
250
Erbt der Sohn vom Vater oder der Vater vom Sohn?
251
Typumwandlungen
254
Upcasting
255
Den Typ überprüfen
256
Welche Methode hätten’s denn gerne? Methoden überladen
257
Abo-Service
258
Serviceorientiert vs. objektorientiert
260
Zurück zu den Objekten
261
Die volle Überladung
262
Deutschland sucht den Knetsuperstar
263
Zusammenfassung
265
7 Schnittstellen und andere leichte Verletzungen – Abstrakte Klassen und Interfaces
267
Abstrakte Klassen
268
Abstrakte Methoden
270
Digital oder analog? Hauptsache abstrakt!
272
Alles abstrakt, oder was?
280
Schnittstellen
281
Übungen zu Interfaces
286
Für die einen sind es Interfaces, …
288
Interfaces und Vererbung
289
Weniger ist manchmal mehr
291
Konstanten in Interfaces
292
Konstanten in Konstantenklassen
292
Statischer Import
293
Statische Blöcke
294
Konstanten über Enums
295
Interfaces – Wiederholung
296
Noch mehr Klassen
297
Statische Memberklassen
297
Nichtstatische Memberklassen
299
Lokale Klassen
300
Anonyme Klassen
301
Abstrakt und polymorph – alles klar, Schrödinger?
303
8 Hast du eigentlich einen Überblick über deine ganzen Schuhe? – Arrays, Collections & Maps
305
Ich will mehr davon – Beziehungen zu Katzen und andere Freundinnen
306
Objekte der Begierde
308
Ab in die nächste Dimension
309
Gib mir alles
310
Solche Schuhe hast du schon!
311
Alles muss man selber machen
312
Auf den Spuren der Objektgleichheit
314
Gleich ist gleich – oder doch nicht?
315
Arrays wachsen nicht mit
315
Schuhkollektionen
317
Solche Schuhe hast du immer noch!
319
Soll ich dir mal meine Schuhsammlung zeigen?
321
Der Iterator (hört sich krass an, oder?)
322
Link und listig
323
Einmal heißt einmal und dann keinmal mehr
324
Hash mich, ich bin der Frühling
325
Sets für die Kripo
326
Sets für den Schuhtester
329
Der richtige Hashcode
330
Bäume und Räume
333
Größer oder kleiner?
335
Sortieren ohne Bäume
338
Sortierte Schuhe
340
Mappen raus
341
So viele Schuhe hast du schon
342
Schlangen im Keller
345
Hinten anstellen!
346
Lala-lalalala-lala-la, bald ist Java 8 mit Lambda da
347
filter(), map() und reduce()
349
High Heels!!!
353
Nochmal alles ganz lambsam
355
9 Ausnahmsweise und um ganz sicher zu gehen – Exceptions
357
Aus Fehlern werden Ausnahmen
358
Deine erste Exception
359
Das Werfen vorbereiten
360
Fangen will gelernt sein
362
Ganz zum Schluss – der finally-Block
364
Hier werden Sie individuell behandelt
365
Vererbung von Exceptions
367
Die Ausnahme als Auskunftsobjekt – was ist eigentlich passiert?
368
Information erwünscht, Abhängigkeit unerwünscht
370
Exceptions weiterwerfen
371
Wann und wie behandeln
372
Exceptions immer weiterleiten? Nicht immer der richtige Weg
373
Muss man nicht fangen – Unchecked Exceptions
375
Defensiv programmieren gegen Runtime-Exceptions
378
Exceptions loggen
379
Lass den Türsteher mitloggen
380
Nicht mehr zu retten
382
Speicher voll
384
Automatisches Schließen von Ressourcen
385
Dateien lesen
386
Ausnahmen bestätigen die Regel
388
10 Ey Typ, du kummst hier nit rein! – Generics
391
Generische Typen
392
Bevor es Generics gab …
393
… und mit Generics
394
Hunde vs. Katzen
396
Katzenkorb als Unterklasse
397
Typisierte Interfaces
398
Wildcard-Typen – das Problem
399
Der nach oben beschränkte Wildcard-Typ
402
Der Haken: Schrödinger darf nicht schreiben
403
Der nach unten beschränkte Wildcard-Typ
406
Typisierte Methoden
408
Übungen zu Wildcards
409
Wiederholung
412
Kaffeesatz
415
11 Wilde Ströme – Eingabe und Ausgabe – Dateien, Streams und Serialisierung
417
Bossingen kommt mit Dateien
418
Willst du mehr? Probier’s binär!
419
Binärdateien schreiben – auch mit Byte-Streams
421
Megalangsam – Dateien kopieren mit normalen Streams
422
Viel schneller – Dateien kopieren mit Buffered Streams
423
Wer liest schon Bytes? Textdateien lesen mit Character-Streams
424
Textdateien schreiben mit Character-Streams
425
1:0 für den CSV – Textdateien umwandeln
426
Mit Kanonen auf Verzeichnisse schießen
429
Endlich Ordnung – Dateien und Verzeichnisse erstellen
430
Kundendaten konvertieren am Fließband
432
Gut gefiltert ist halb gewonnen – Verzeichnisse filtern
434
Auf dem richtigen Pfad: Die neue File-IO-API
435
Kundendateien konvertieren – jetzt noch einfacher
438
Objekte speichern
440
Geschachtelte Objekte speichern
443
Serialisierung und Deserialisierung beeinflussen
445
Individuelle Serialisierung mit writeObject() und readObject()
446
Der Nusskopf und die Kopfnuss
448
Nochmal alles zum mitstreamen
450
12 Nicht den Faden verlieren – Programmierung mit Threads
451
Prozesse und Threads
452
Der erste Thread
454
Night of the living thread
455
Das war gerade noch ungerade
457
Da krieg ich Zustände
459
Threads schlafen legen
460
Helden, aufgepasst!
461
Auf andere warten
464
Synchronisierung
465
Erst die geraden Zahlen, bitte!
468
… Deadlocks!
469
Deadlocks finden und umgehen
471
Der Schlüssel zum Erfolg
473
Livelock, Starvation, Priorisierung und ein Bier
475
… Livelock
475
Prioritäten setzen
478
Warten und benachrichtigen
480
Starvation
482
Warten und schlafen
484
4 000 gegen 2 oder Arbeit verteilen
485
Die Zusammenfassung, damit du nicht den Faden verlierst
489
13 Das kann sich doch schon sehen lassen! – Deployment, Dokumentation und Module
491
Abgepackt
492
Ich packe meine JAR-Datei …
495
Java Web Start
497
Bibliotheken einbinden in Eclipse
499
Hallo Onkel Doc – Dokumentation mit javadoc
502
Strukturiert und modularisiert
505
Modular? Na klar!
509
Module kompilieren
511
Jetzt hast du’s gepackt
513
14 Austauschschüler – das Datenaustauschformat XML
515
XML
516
Russische Salami
522
Musikschule mit XML
527
Ist es ein Element oder ein Attribut?
529
XML lesen
530
Der Spürhund – Simple API for XML
530
Der trainierte Spürhund oder »Don’t call me, I'll call you« – StAX
534
Die Cursor-API
535
Die Iterator-API
535
Das Document Object Model …
537
Flower Power
540
XML schreiben
542
1, 2 oder 3? SAX, StAX oder DOM? Was nehme ich wann?
545
Viele Wege führen nach Java
547
JAXB
549
Von XML nach Java und wieder zurück
551
Power Flower
553
Die XTra, XPlizite, Xakte, XOrbitante Zusammenfassung
557
15 Datenspeicherung mit JDBC – Datenbanken
559
Relationale Datenbanken
560
Die erste Tabelle mit SQL
561
Eine Verbindung herstellen
565
Datensätze hinzufügen
567
Helden und Briefmarken
569
Anweisungen zusammenfassen
572
Gut vorbereitet
573
Daten auslesen
574
Was hätten’S denn gerne? Datensätze nach Kriterien auswählen
576
Daten sortiert ausgeben
578
Wer ist der Stärkste im ganzen Land?
579
Informationen aus mehreren Tabellen über Joins verknüpfen
583
Alles wieder zurück bitte – Transaktionen
584
Mapping zwischen relationalen Datenbanken und Java-Objekten
586
Roll zurück den Troll
587
Wiederholung
590
SELECT DAS_WICHTIGSTE FROM KAPITEL_15
591
16 Neue Tanzschritte – GUI-Programmierung mit Swing und JavaFX
593
Mit Schwung weg von der Konsole – Swing
594
Alles im Rahmen – wie du GUI-Komponenten erstellst
594
Alles in Reih und Glied – wie du GUI-Komponenten anordnen kannst
597
GUI-Komponenten anordnen kannst
597
Alles im Raster mit dem Grid-Layout
600
Zellen verbinden mit dem Grid-Bag-Layout
602
Schuhe in der Box … oder doch besser im Grid?
606
Ordnung: gut, Verhalten: … nichts? Wie du GUI-Komponenten das Verhalten hinzufügst
609
Validierung von Nutzereingaben mit Swing
613
Schuhschiebereien
614
Bunter und mehr Action mit JavaFX
618
Auf die große Bühne – JavaFX on stage
620
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
647
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 – die neue Date- und Time-API
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