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
Der Workspace
38
Die 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 und Dokumentation
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
Jetzt hast du’s gepackt
505
14 Austauschschüler – das Datenaustauschformat XML
507
XML
508
Russische Salami
514
Musikschule mit XML
519
Ist es ein Element oder ein Attribut?
521
XML lesen
522
Der Spürhund – Simple API for XML
522
Der trainierte Spürhund oder »Don’t call me, I'll call you« – StAX
526
Die Cursor-API
527
Die Iterator-API
527
Das Document Object Model …
529
Flower Power
532
XML schreiben
534
1, 2 oder 3? SAX, StAX oder DOM? Was nehme ich wann?
537
Viele Wege führen nach Java
539
JAXB
541
Von XML nach Java und wieder zurück
543
Power Flower
545
Die XTra, XPlizite, Xakte, XOrbitante Zusammenfassung
549
15 Datenspeicherung mit JDBC – Datenbanken
551
Relationale Datenbanken
552
Die erste Tabelle mit SQL
553
Eine Verbindung herstellen
557
Datensätze hinzufügen
559
Helden und Briefmarken
561
Anweisungen zusammenfassen
564
Gut vorbereitet
565
Daten auslesen
566
Was hätten’S denn gerne? Datensätze nach Kriterien auswählen
568
Daten sortiert ausgeben
570
Wer ist der Stärkste im ganzen Land?
571
Informationen aus mehreren Tabellen über Joins verknüpfen
575
Alles wieder zurück bitte – Transaktionen
576
Mapping zwischen relationalen Datenbanken und Java-Objekten
578
Roll zurück den Troll
579
Wiederholung
582
SELECT DAS_WICHTIGSTE FROM KAPITEL_15
583
16 Neue Tanzschritte – GUI-Programmierung mit Swing und JavaFX
585
Mit Schwung weg von der Konsole – Swing
586
Alles im Rahmen – wie du GUI-Komponenten erstellst
586
Alles in Reih und Glied – wie du GUI-Komponenten anordnen kannst
589
Alles im Raster mit dem Grid-Layout
592
Zellen verbinden mit dem Grid-Bag-Layout
594
Schuhe in der Box … oder doch besser im Grid?
598
Ordnung: gut, Verhalten: … nichts? Wie du GUI-Komponenten das Verhalten hinzufügst
601
Validierung von Nutzereingaben mit Swing
605
Schuhschiebereien
606
Bunter und mehr Action mit JavaFX
610
Auf die große Bühne – JavaFX on stage
612
Noch mehr Zucker mit CSS
616
Das Verhalten hinzufügen
618
Validierung von Nutzereingaben mit JavaFX
619
Schiebereien mit JavaFX
620
Für Profis – Verhalten hinzufügen ohne Listener
621
Schieberegler mit Verhalten
623
Die Lösung für den Hardcore-Profi – Binding kann auch rechnen
624
Das Wichtigste zur Gesellenprüfung Maler und Lackierer, Fachbereich Swing und JavaFX
627
17 Schrödinger goes international – Internationalisierung, Lokalisierung, Formatierung, Pattern Matching und reguläre Ausdrücke
629
Den Nutzer lokalisieren
630
Die Software internationalisieren
633
Finnische Schuhkartons
635
Speak english per favore
638
Klassen laden
639
Wein oder Bier?
641
Zahlen und Währungen formatieren
643
Datums- und Zeitangaben formatieren
644
Währungsrechner
646
Internationalisierte Textmeldungen formatieren
648
Das wurde aber auch Zeit – die neue Date- und Time-API
649
Zeitzone, Zeitlinie, Zeitpunkte und Zeitdauern
650
Ohne Zeitlinie – Datum, Zeit und Zeiträume
652
Zeitzonen und Zeitunterschiede
654
Alles nochmal auf einen Blick, so viel Zeit muss sein
655
Formatierung von Datums- und Zeitangaben
656
Formatieren über die Klasse String
657
Mit Format
659
Pattern Matching mit regulären Ausdrücken
660
Kein Anschluss unter dieser Nummer
665
Teile finden
665
Drin oder nicht drin? Keine Frage!
667
Auf einzelne Teile zugreifen über Gruppen
668
E-Mail-Adressen validieren
669
Tiivistelmä pääkohdista – das war Finnisch
671
18 Bist du dir da sicher? Unit-Testen und Java Web Start continued – Unit-Tests
673
Deine Klassen testen
674
Test-Frameworks
675
Ich hatte aber einen Cocktail bestellt
682
Ausnahmefälle testen
686
Gar nicht eklig
688
Java Web Start continued
690
Das wichtigste unit to know
693
Index
697