Inhaltsangabe:
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 ... 231 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
Kurze Inhaltsangabe:
Durchblicken, mitmachen und genießen!
Inhaltsangabe:
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 gründlicher Einstieg - Objektorientierung aus der Profi-Praxis - Alle neuen Entwicklungen im Blick - Spaß mit Collections, Interfaces und Generics - XML-Parser für alle Fälle - JavaFX-GUIs mit Stil - Dateien, Streams und Datenbanken fest im Griff - Mutithreading ohne Verstricken - Code, den ihr auch übermorgen noch versteht - Keine Angst vor regulären Ausdrücken - Unit Tests und Test Driven Design - Unmengen an Beispielcode und Übungen