Schrödinger programmiert Java
Das etwas andere Fachbuch. Durchstarten mit Java und richtig viel Spaß! Für Einsteiger, Umsteiger und Code-Fans.
Schrödinger programmiert Java
Das etwas andere Fachbuch. Durchstarten mit Java und richtig viel Spaß! Für Einsteiger, Umsteiger und Code-Fans.
- Broschiertes Buch
- Merkliste
- Auf die Merkliste
- Bewerten Bewerten
- Teilen
- Produkt teilen
- Produkterinnerung
- Produkterinnerung
Die Java-Einführung, die Dir den vollen Durchblick verschafft. Schreibe von Anfang an auf Profi-Art, objektorientiert, mit Interfaces, Generics und auf dem neuesten Stand. Mit Schrödinger und seinen witzigen Fragen macht guter Code richtig Spaß. Von einfachen Schleifen bis zur fertigen Anwendung löst ihr Probleme wie die Frage, ob Schrödingers Freundin »solche Schuhe« nicht schon hat. Oder ob es wirklich schon wieder Dinkelpfannkuchen geben muss. Spitzen-Beispielcode, fantastisch illustriert. Für Einsteiger, Umsteiger und Fans.
Das alles, und noch viel mehr:
Installationshilfe und…mehr
- Kai GünsterSchrödinger lernt HTML5, CSS und JavaScript49,90 €
- Eric FreemanHTML5-Programmierung von Kopf bis Fuß: Webanwendungen mit HTML5 und JavaScript44,90 €
- Michael IndenEinfach Java22,90 €
- Kathy SierraJava von Kopf bis Fuß49,90 €
- Philip AckermannJavaScript50,99 €
- Michael IndenJava - Die Neuerungen in Version 17 LTS, 18 und 1932,90 €
- Eric FreemanJavaScript-Programmierung von Kopf bis Fuß44,90 €
-
-
-
-
-
-
-
-
-
-
-
-
-
Das alles, und noch viel mehr:
Installationshilfe und gründlicher EinstiegObjektorientierung aus der Profi-PraxisAlle neuen Entwicklungen im BlickSpaß mit Collections, Interfaces und GenericsXML-Parser für alle Fälle JavaFX-GUIs mit StilDateien, Streams und Datenbanken fest im GriffMutithreading ohne VerstrickenCode, den ihr auch übermorgen noch verstehtKeine Angst vor regulären AusdrückenUnit Tests und Test Driven DesignUnmengen an Beispielcode und Übungen
- Produktdetails
- Rheinwerk Computing
- Verlag: Rheinwerk Verlag
- Artikelnr. des Verlages: 459/07272
- 3. Aufl.
- Seitenzahl: 712
- Erscheinungstermin: Dezember 2019
- Deutsch
- Abmessung: 236mm x 203mm x 45mm
- Gewicht: 1706g
- ISBN-13: 9783836272728
- ISBN-10: 3836272725
- Artikelnr.: 57534311
- Herstellerkennzeichnung
- Rheinwerk Publishing Inc.
- 2 Heritage Drive
- 11201 Quincy, MA, US
- Info@rheinwerk-verlag.de
- www.rheinwerk-verlag.de
- Rheinwerk Computing
- Verlag: Rheinwerk Verlag
- Artikelnr. des Verlages: 459/07272
- 3. Aufl.
- Seitenzahl: 712
- Erscheinungstermin: Dezember 2019
- Deutsch
- Abmessung: 236mm x 203mm x 45mm
- Gewicht: 1706g
- ISBN-13: 9783836272728
- ISBN-10: 3836272725
- Artikelnr.: 57534311
- Herstellerkennzeichnung
- Rheinwerk Publishing Inc.
- 2 Heritage Drive
- 11201 Quincy, MA, US
- Info@rheinwerk-verlag.de
- www.rheinwerk-verlag.de
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
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