Das Standardwerk zur Java-Programmierung von Christian Ullenboom
- Programmieren mit der Java Platform, Standard Edition 25
- Java von A bis Z: Einführung, Praxis, Referenz
- Von Ausdrücken und Anweisungen zu Klassen und Objekten
Java-Bücher gibt es wie Sand am Meer, aber die Java-Insel ist
das Kultbuch für Programmierer und erste Wahl, wenn es um
aktuelles und praktisches Java-Wissen geht. Seit über einem Jahrzehnt profitieren Java-Einsteiger, Studierende und Umsteiger von anderen Programmiersprachen gleichermaßen von diesem
Standardwerk unter den Java-Büchern. Dozenten und Ausbilder schätzen das Buch für die zahlreichen Beispiele, Aufgaben und Musterlösungen. Leserinnen und Leser feiern es für die
verständliche Darstellungsweise und den feinen Humor; Programmierung darf auch Spaß machen!
Aus dem Inhalt:
- Imperative Sprachkonzepte
- Klassen und Objekte
- Ausnahmebehandlung
- Generics
- Lambda-Ausdrücke und funktionale Programmierung
- Die Klassenbibliothek
- Nebenläufige Programmierung
- Einführung in Datenstrukturen, GUI-Entwicklung, Dateien usw.
Inhaltsverzeichnis
Materialien zum Buch . . . 32
Vorwort . . . 33
1. Java ist auch eine Sprache . . . 49
1. 1 . . . Historischer Hintergrund . . . 50
1. 2 . . . Warum Java populär ist -- die zentralen Eigenschaften . . . 52
1. 3 . . . Java im Vergleich zu anderen Sprachen * . . . 63
1. 4 . . . Einschränkungen von Java . . . 65
1. 5 . . . Weiterentwicklung und Umbrüche . . . 67
1. 6 . . . Java-Plattformvarianten . . . 70
1. 7 . . . Java SE-Implementierungen . . . 75
1. 8 . . . Installation des JDK und erster Start . . . 78
1. 9 . . . Entwicklungsumgebungen . . . 84
1. 10 . . . Zum Weiterlesen . . . 90
2. Imperative Sprachkonzepte . . . 91
2. 1 . . . Von der Klasse zur Anweisung . . . 91
2. 2 . . . Lexikalische Grundlagen . . . 109
2. 3 . . . Datentypen, Typisierung, Variablen und Zuweisungen . . . 113
2. 4 . . . Ausdrücke, Operanden und Operatoren . . . 132
2. 5 . . . Bedingte Anweisungen oder Fallunterscheidungen . . . 156
2. 6 . . . Immer das Gleiche mit den Schleifen . . . 175
2. 7 . . . Methoden deklarieren . . . 193
2. 8 . . . Methoden brauchen ein Zuhause: Instanz oder Klasse . . . 214
2. 9 . . . Zum Weiterlesen . . . 220
3. Klassen und Objekte . . . 221
3. 1 . . . Objektorientierte Programmierung (OOP) . . . 221
3. 2 . . . Eigenschaften einer Klasse . . . 223
3. 3 . . . Natürlich modellieren mit der UML (Unified Modeling Language) * . . . 225
3. 4 . . . Neue Objekte erzeugen . . . 227
3. 5 . . . ZZZZZnake . . . 237
3. 6 . . . Pakete schnüren, Importe und Compilationseinheiten . . . 239
3. 7 . . . Mit Referenzen arbeiten, Vielfalt, Identität, Gleichwertigkeit . . . 250
3. 8 . . . Der Zusammenhang von new, Heap und Garbage-Collector . . . 262
3. 9 . . . Zum Weiterlesen . . . 264
4. Arrays und ihre Anwendungen . . . 265
4. 1 . . . Einfache Feldarbeit . . . 265
4. 2 . . . Die erweiterte for-Schleife . . . 277
4. 3 . . . Methode mit variabler Argumentanzahl (Varargs) . . . 281
4. 4 . . . Mehrdimensionale Arrays * . . . 284
4. 5 . . . Bibliotheksunterstützung von Arrays . . . 290
4. 6 . . . Die Klasse Arrays zum Vergleichen, Füllen, Suchen und Sortieren nutzen . . . 292
4. 7 . . . Der Startpunkt für das Laufzeitsystem: main(. . .) . . . 307
4. 8 . . . Zum Weiterlesen . . . 310
5. Der Umgang mit Zeichen und Zeichenketten . . . 311
5. 1 . . . Von ASCII über ISO-8859-1 zu Unicode . . . 311
5. 2 . . . Datentypen für Zeichen und Zeichenketten . . . 319
5. 3 . . . Die Character-Klasse . . . 320
5. 4 . . . Datentypen für Zeichenketten . . . 325
5. 5 . . . Die Klasse String und ihre Methoden . . . 327
5. 6 . . . Veränderbare Zeichenketten mit StringBuilder . . . 359
5. 7 . . . CharSequence als Basistyp . . . 368
5. 8 . . . Konvertieren zwischen Primitiven und Strings . . . 371
5. 9 . . . Strings verketten (konkatenieren) . . . 379
5. 10 . . . Zerlegen von Zeichenketten . . . 381
5. 11 . . . Ausgaben formatieren . . . 386
5. 12 . . . Zum Weiterlesen . . . 393
6. Eigene Klassen schreiben . . . 395
6. 1 . . . Eigene Klassen mit Eigenschaften deklarieren . . . 395
6. 2 . . . Privatsphäre und Sichtbarkeit . . . 407
6. 3 . . . Eine für alle -- statische Methoden und Klassenvariablen . . . 418
6. 4 . . . Konstanten und Aufzählungen . . . 426
6. 5 . . . Objekte anlegen und zerstören . . . 435
6. 6 . . . Klassen- und Objektinitialisierung * . . . 449
6. 7 . . . Zum Weiterlesen . . . 458
7. Objektorientierte Beziehungsfragen . . . 459
7. 1 . . . Assoziationen zwischen Objekten . . . 459
7. 2 . . . Vererbung . . . 470
7. 3 . . . Typen in Hierarchien . . . 481
7. 4 . . . Methoden überschreiben . . . 494
7. 5 . . . Drum prüfe, wer sich dynamisch bindet . . . 501
7. 6 . . . Finale Klassen und finale Methoden . . . 504
7. 7 . . . Abstrakte Klassen und abstrakte Methoden . . . 506
7. 8 . . . Weiteres zum Überschreiben und dynamischen Binden . . . 514
7. 9 . . . Zum Weiterlesen und Programmieraufgabe . . . 520
8. Records, Schnittstellen, Aufzählungen, versiegelte Klassen . . . 523
8. 1 . . . Records . . . 523
8. 2 . . . Schnittstellen . . . 535
8. 3 . . . Aufzählungstypen . . . 576
8. 4 . . . Versiegelte Klassen und Schnittstellen . . . 587
8. 5 . . . Zum Weiterlesen . . . 595
9. Ausnahmen müssen sein . . . 597
9. 1 . . . Problembereiche einzäunen . . . 598
9. 2 . . . Ausnahmen mit throws nach oben reichen . . . 607
9. 3 . . . Die Klassenhierarchie der Ausnahmen . . . 608
9. 4 . . . Abschlussbehandlung mit finally . . . 618
9. 5 . . . Auslösen eigener Exceptions . . . 623
9. 6 . . . try mit Ressourcen (automatisches Ressourcenmanagement) . . . 640
9. 7 . . . Besonderheiten bei der Ausnahmebehandlung * . . . 650
9. 8 . . . Harte Fehler -- Error * . . . 655
9. 9 . . . Zusicherungen im Programmcode (Assertions) * . . . 656
9. 10 . . . Zum Weiterlesen . . . 659
10. Geschachtelte Typen . . . 661
10. 1 . . . Geschachtelte Klassen, Records, Schnittstellen und Aufzählungen . . . 661
10. 2 . . . Statische geschachtelte Typen . . . 663
10. 3 . . . Nichtstatische geschachtelte Typen . . . 665
10. 4 . . . Lokale Klassen . . . 668
10. 5 . . . Anonyme innere Klassen . . . 670
10. 6 . . . Vermischtes . . . 675
10. 7 . . . Zum Weiterlesen . . . 679
11. Besondere Typen der Java SE . . . 681
11. 1 . . . Object ist die Mutter aller Klassen . . . 682
11. 2 . . . Schwache Referenzen und Cleaner . . . 704
11. 3 . . . Die Utility-Klasse java. util. Objects . . . 705
11. 4 . . . Vergleichen von Objekten und Ordnung herstellen . . . 709
11. 5 . . . Wrapper-Klassen und Autoboxing . . . 718
11. 6 . . . Iterator, Iterable * . . . 737
11. 7 . . . Annotationen in der Java SE . . . 745
11. 8 . . . Zum Weiterlesen . . . 750
12. Generics< T> . . . 751
12. 1 . . . Einführung in Java Generics . . . 751
12. 2 . . . Umsetzen der Generics, Typlöschung und Raw-Types . . . 768
12. 3 . . . Die Typen über Bounds einschränken . . . 776
12. 4 . . . Typparameter in der throws-Klausel * . . . 780
12. 5 . . . Generics und Vererbung, Invarianz . . . 784
12. 6 . . . Konsequenzen der Typlöschung: Typ-Token, Arrays und Brücken * . . . 796
12. 7 . . . Zum Weiterlesen . . . 806
13. Lambda-Ausdrücke und funktionale Programmierung . . . 807
13. 1 . . . Funktionale Schnittstellen und Lambda-Ausdrücke . . . 807
13. 2 . . . Methodenreferenz . . . 831
13. 3 . . . Konstruktorreferenz . . . 836
13. 4 . . . Funktionale Programmierung . . . 839
13. 5 . . . Funktionale Schnittstellen aus dem java. util. function-Paket . . . 848
13. 6 . . . Optional ist keine Nullnummer . . . 863
13. 7 . . . Was ist jetzt so funktional? . . . 874
13. 8 . . . Zum Weiterlesen . . . 876
14. Architektur, Design und angewandte Objektorientierung . . . 877
14. 1 . . . SOLIDe Modellierung . . . 877
14. 2 . . . Architektur, Design und Implementierung . . . 881
14. 3 . . . Design-Patterns (Entwurfsmuster) . . . 882
14. 4 . . . Zum Weiterlesen . . . 890
15. Java Platform Module System . . . 891
15. 1 . . . Klassenlader (Class Loader) und Modul-/Klassenpfad . . . 891
15. 2 . . . Module im JPMS einbinden . . . 897
15. 3 . . . Eigene Module entwickeln . . . 902
15. 4 . . . Zum Weiterlesen . . . 911
16. Die Klassenbibliothek . . . 913
16. 1 . . . Die Java-Klassenphilosophie . . . 913
16. 2 . . . Einfache Zeitmessung und Profiling * . . . 917
16. 3 . . . Die Klasse Class . . . 918
16. 4 . . . Die Utility-Klassen System und Properties . . . 921
16. 5 . . . Sprachen der Länder . . . 929
16. 6 . . . Wichtige Datum-Klassen im Überblick . . . 933
16. 7 . . . Date-Time-API . . . 935
16. 8 . . . Logging mit Java . . . 940
16. 9 . . . Maven: Build-Management und Abhängigkeiten auflösen . . . 943
16. 10 . . . Zum Weiterlesen . . . 945
17. Einführung in die nebenläufige Programmierung . . . 947
17. 1 . . . Nebenläufigkeit und Parallelität . . . 947
17. 2 . . . Existierende Threads und neue Threads erzeugen . . . 951
17. 3 . . . Der Ausführer (Executor) kommt ins Spiel . . . 965
17. 4 . . . Zum Weiterlesen . . . 981
18. Einführung in Datenstrukturen und Algorithmen . . . 983
18. 1 . . . Listen . . . 983
18. 2 . . . Mengen (Sets) . . . 998
18. 3 . . . Assoziative Speicher . . . 1009
18. 4 . . . Ausgewählte Basistypen . . . 1015
18. 5 . . . Java-Stream-API . . . 1016
18. 6 . . . Einen Stream erzeugen . . . 1019
18. 7 . . . Terminale Operationen . . . 1022
18. 8 . . . Intermediäre Operationen . . . 1029
18. 9 . . . Zum Weiterlesen . . . 1036
19. Einführung in grafische Oberflächen . . . 1039
19. 1 . . . GUI-Frameworks . . . 1039
19. 2 . . . Abstract Window Toolkit (AWT) . . . 1040
19. 3 . . . Java Foundation Classes und Swing . . . 1043
19. 4 . . . JavaFX . . . 1045
19. 5 . . . Standard Widget Toolkit (SWT) * . . . 1047
19. 6 . . . Zum Weiterlesen . . . 1048
20. Einführung in Dateien und Datenströme . . . 1049
20. 1 . . . Alte und neue Welt in java. io und java. nio . . . 1049
20. 2 . . . Dateisysteme und Pfade . . . 1050
20. 3 . . . Dateien mit wahlfreiem Zugriff . . . 1060
20. 4 . . . Basisklassen für die Ein-/Ausgabe . . . 1065
20. 5 . . . Lesen aus Dateien und Schreiben in Dateien . . . 1077
20. 6 . . . Zum Weiterlesen . . . 1085
21. Einführung ins Datenbankmanagement mit JDBC . . . 1087
21. 1 . . . Relationale Datenbanken und Java-Zugriffe . . . 1087
21. 2 . . . Eine Beispielabfrage . . . 1090
21. 3 . . . Zum Weiterlesen . . . 1091
22. Bits und Bytes, Mathematisches und Geld . . . 1093
22. 1 . . . Bits und Bytes . . . 1093
22. 2 . . . Gleitkomma-Arithmetik in Java . . . 1108
22. 3 . . . Die Eigenschaften der Klasse Math . . . 1114
22. 4 . . . Genauigkeit, Wertebereich eines Typs und Überlaufkontrolle * . . . 1126
22. 5 . . . Zufallszahlen: Random, ThreadLocalRandom und SecureRandom . . . 1131
22. 6 . . . Große Zahlen * . . . 1135
22. 7 . . . Geld und Währung . . . 1149
22. 8 . . . Zum Weiterlesen . . . 1151
23. Testen mit JUnit . . . 1153
23. 1 . . . Softwaretests . . . 1153
23. 2 . . . Das Test-Framework JUnit . . . 1154
23. 3 . . . Java-Assertions-Bibliotheken und AssertJ . . . 1167
23. 4 . . . Aufbau größerer Testfälle . . . 1169
23. 5 . . . Wie gutes Design das Testen ermöglicht . . . 1171
23. 6 . . . Dummy, Fake, Stub und Mock . . . 1173
23. 7 . . . JUnit-Erweiterungen, Testzusätze . . . 1176
23. 8 . . . Zum Weiterlesen . . . 1177
24. Die Werkzeuge des JDK . . . 1179
24. 1 . . . Übersicht . . . 1179
24. 2 . . . Java-Quellen übersetzen . . . 1180
24. 3 . . . Die Java-Laufzeitumgebung . . . 1182
24. 4 . . . Dokumentationskommentare mit Javadoc . . . 1184
24. 5 . . . Das Archivformat JAR . . . 1194
24. 6 . . . Zum Weiterlesen . . . 1197
Anhang . . . 1199
A . . . Java SE-Module und Paketübersicht . . . 1199
B . . . Referenz Schlüsselwörter . . . 1217
Index . . . 1223