Technische Daten
Erscheinungsdatum
28.12.2018
Autor
Christian Ullenboom
Einbandart
Gebundene Ausgabe
Buch Untertitel
Java programmieren lernen mit dem umfassenden Standardwerk für Java-Entwickler. Aktuell zu Java 11
Schlagwörter
Hand-Buch Bücher Grundlagen Kurse Tipps Workshops Tutorials Anleitung Training Ausbildung Informatik, Eclipse, NetBeans, xml, Performanz, Lambda Expressions, JDBC, JDK, JSON, Oracle, Objektorientiert programmieren OOP, Referenz, Datenbanken, Programmierung Software-Entwicklung, Java-12
Inhaltsverzeichnis
Vorwort ... 31
1. Java ist auch eine Sprache ... 49
1.1 ... Historischer Hintergrund ... 49
1.2 ... Warum Java gut ist -- die zentralen Eigenschaften ... 51
1.3 ... Java im Vergleich zu anderen Sprachen * ... 65
1.4 ... Weiterentwicklung und Verluste ... 68
1.5 ... Java-Plattformen: Java SE, Jakarta EE, Java ME, Java Card ... 72
1.6 ... Java SE-Implementierungen ... 77
1.7 ... Die Installation des Oracle OpenJDK ... 81
1.8 ... Das erste Programm compilieren und testen ... 83
1.9 ... Entwicklungsumgebungen im Allgemeinen ... 87
1.10 ... Eclipse IDE im Speziellen ... 89
1.11 ... Zum Weiterlesen ... 101
2. Imperative Sprachkonzepte ... 103
2.1 ... Elemente der Programmiersprache Java ... 103
2.2 ... Von der Klasse zur Anweisung ... 111
2.3 ... Datentypen, Typisierung, Variablen und Zuweisungen ... 122
2.4 ... Ausdrücke, Operanden und Operatoren ... 140
2.5 ... Bedingte Anweisungen oder Fallunterscheidungen ... 166
2.6 ... Immer das Gleiche mit den Schleifen ... 182
2.7 ... Methoden einer Klasse ... 199
2.8 ... Zum Weiterlesen ... 226
3. Klassen und Objekte ... 227
3.1 ... Objektorientierte Programmierung (OOP) ... 227
3.2 ... Eigenschaften einer Klasse ... 229
3.3 ... Natürlich modellieren mit der UML (Unified Modeling Language) * ... 230
3.4 ... Neue Objekte erzeugen ... 234
3.5 ... ZZZZZnake ... 246
3.6 ... Pakete schnüren, Importe und Kompilationseinheiten ... 249
3.7 ... Mit Referenzen arbeiten, Identität und Gleichheit (Gleichwertigkeit) ... 256
3.8 ... Zum Weiterlesen ... 268
4. Arrays und ihre Anwendungen ... 269
4.1 ... Arrays ... 269
4.2 ... Der Einstiegspunkt für das Laufzeitsystem: main(...) ... 311
4.3 ... Zum Weiterlesen ... 315
5. Der Umgang mit Zeichenketten ... 317
5.1 ... Von ASCII über ISO-8859-1 zu Unicode ... 317
5.2 ... Die Character-Klasse ... 326
5.3 ... Zeichenfolgen ... 332
5.4 ... Die Klasse String und ihre Methoden ... 334
5.5 ... Veränderbare Zeichenketten mit StringBuilder und StringBuffer ... 360
5.6 ... CharSequence als Basistyp ... 370
5.7 ... Konvertieren zwischen Primitiven und Strings ... 373
5.8 ... Strings zusammenhängen (konkatenieren) ... 382
5.9 ... Zerlegen von Zeichenketten ... 384
5.10 ... Ausgaben formatieren ... 390
5.11 ... Zum Weiterlesen ... 396
6. Eigene Klassen schreiben ... 397
6.1 ... Eigene Klassen mit Eigenschaften deklarieren ... 397
6.2 ... Privatsphäre und Sichtbarkeit ... 409
6.3 ... Eine für alle -- statische Methoden und statische Attribute ... 419
6.4 ... Konstanten und Aufzählungen ... 426
6.5 ... Objekte anlegen und zerstören ... 434
6.6 ... Klassen- und Objektinitialisierung * ... 446
6.7 ... Zum Weiterlesen ... 456
7. Objektorientierte Beziehungsfragen ... 457
7.1 ... Assoziationen zwischen Objekten ... 457
7.2 ... Vererbung ... 464
7.3 ... Typen in Hierarchien ... 475
7.4 ... Methoden überschreiben ... 482
7.5 ... Drum prüfe, wer sich dynamisch bindet ... 493
7.6 ... Abstrakte Klassen und abstrakte Methoden ... 502
7.7 ... Schnittstellen ... 510
7.8 ... SOLIDe Modellierung ... 549
7.9 ... Zum Weiterlesen ... 552
8. Ausnahmen müssen sein ... 553
8.1 ... Problembereiche einzäunen ... 553
8.2 ... Die Klassenhierarchie der Ausnahmen ... 569
8.3 ... RuntimeException muss nicht aufgefangen werden ... 579
8.4 ... Harte Fehler -- Error * ... 581
8.5 ... Auslösen eigener Exceptions ... 582
8.6 ... Automatisches Ressourcen-Management (try mit Ressourcen) ... 602
8.7 ... Besonderheiten bei der Ausnahmebehandlung * ... 611
8.8 ... Assertions * ... 617
8.9 ... Zum Weiterlesen ... 621
9. Geschachtelte.Typen ... 623
9.1 ... Geschachtelte Klassen, Schnittstellen, Aufzählungen ... 623
9.2 ... Statische geschachtelte Typen ... 624
9.3 ... Nichtstatische geschachtelte Typen ... 626
9.4 ... Lokale Klassen ... 629
9.5 ... Anonyme innere Klassen ... 631
9.6 ... Zugriff auf lokale Variablen aus lokalen und anonymen Klassen * ... 636
9.7 ... this in Unterklassen * ... 637
9.8 ... Nester ... 640
9.9 ... Zum Weiterlesen ... 641
10. Besondere Typen der Java SE ... 643
10.1 ... Object ist die Mutter aller Klassen ... 644
10.2 ... Schwache Referenzen und Cleaner ... 669
10.3 ... Die Utility-Klasse java.util.Objects ... 670
10.4 ... Vergleichen von Objekten und Ordnung herstellen ... 674
10.5 ... Wrapper-Klassen und Autoboxing ... 683
10.6 ... Iterator, Iterable * ... 703
10.7 ... Die Spezial-Oberklasse Enum ... 710
10.8 ... Annotationen in der Java SE ... 720
10.9 ... Zum Weiterlesen ... 726
11. Generics ... 727
11.1 ... Einführung in Java Generics ... 727
11.2 ... Umsetzen der Generics, Typlöschung und Raw-Types ... 743
11.3 ... Einschränken der Typen über Bounds ... 752
11.4 ... Typparameter in der throws-Klausel * ... 756
11.5 ... Generics und Vererbung, Invarianz ... 759
11.6 ... Konsequenzen der Typlöschung: Typ-Token, Arrays und Brücken * ... 773
11.7 ... Zum Weiterlesen ... 783
12. Lambda-Ausdrücke und funktionale Programmierung ... 785
12.1 ... Code = Daten ... 785
12.2 ... Funktionale Schnittstellen und Lambda-Ausdrücke im Detail ... 788
12.3 ... Methodenreferenz ... 809
12.4 ... Konstruktorreferenz ... 813
12.5 ... Implementierung von Lambda-Ausdrücken * ... 816
12.6 ... Funktionale Programmierung mit Java ... 817
12.7 ... Funktionale Schnittstelle aus dem java.util.function-Paket ... 821
12.8 ... Optional ist keine Nullnummer ... 836
12.9 ... Was ist jetzt so funktional? ... 847
12.10 ... Zum Weiterlesen ... 849
13. Architektur, Design und angewandte Objektorientierung ... 851
13.1 ... Architektur, Design und Implementierung ... 851
13.2 ... Design-Patterns (Entwurfsmuster) ... 852
13.3 ... Zum Weiterlesen ... 860
14. Komponenten, JavaBeans und Module ... 861
14.1 ... JavaBeans ... 861
14.2 ... Klassenlader (Class Loader) und Modul-/Klassenpfad ... 870
14.3 ... Module entwickeln und einbinden ... 876
14.4 ... Zum Weiterlesen ... 891
15. Die Klassenbibliothek ... 893
15.1 ... Die Java-Klassenphilosophie ... 893
15.2 ... Einfache Zeitmessung und Profiling * ... 901
15.3 ... Die Klasse Class ... 904
15.4 ... Klassenlader ... 907
15.5 ... Die Utility-Klassen System und Properties ... 908
15.6 ... Sprachen der Länder ... 917
15.7 ... Wichtige Datum-Klassen im Überblick ... 922
15.8 ... Date-Time-API ... 924
15.9 ... Logging mit Java ... 930
15.10 ... Maven: Build-Management und Abhängigkeiten auflösen ... 933
15.11 ... Zum Weiterlesen ... 937
16. Einführung in die nebenläufige Programmierung ... 939
16.1 ... Nebenläufigkeit und Parallelität ... 939
16.2 ... Laufende Threads, neue Threads erzeugen ... 943
16.3 ... Thread-Eigenschaften und Zustände ... 950
16.4 ... Der Ausführer (Executor) kommt ... 964
16.5 ... Zum Weiterlesen ... 977
17. Einführung in Datenstrukturen und Algorithmen ... 979
17.1 ... Listen ... 979
17.2 ... Mengen (Sets) ... 998
17.3 ... Java Stream API ... 1009
17.4 ... Stream erzeugen ... 1012
17.5 ... Terminale Stream-Operationen ... 1016
17.6 ... Intermediäre Stream-Operationen ... 1027
17.7 ... Zum Weiterlesen ... 1033
18. Einführung in grafische Oberflächen ... 1035
18.1 ... GUI-Frameworks ... 1035
18.2 ... Deklarative und programmierte Oberflächen ... 1039
18.3 ... GUI-Builder ... 1041
18.4 ... Mit dem Eclipse WindowBuilder zur ersten Swing-Oberfläche ... 1042
18.5 ... Grundlegendes zum Zeichnen ... 1054
18.6 ... Zum Weiterlesen ... 1060
19. Einführung in Dateien und Datenströme ... 1061
19.1 ... Alte und neue Welt in java.io und java.nio ... 1061
19.2 ... Dateisysteme und Pfade ... 1063
19.3 ... Dateien mit wahlfreiem Zugriff ... 1072
19.4 ... Basisklassen für die Ein-/Ausgabe ... 1078
19.5 ... Lesen aus Dateien und Schreiben in Dateien ... 1092
19.6 ... Zum Weiterlesen ... 1098
20. Einführung ins Datenbankmanagement mit JDBC ... 1099
20.1 ... Relationale Datenbanken und Datenbankmanagementsysteme ... 1099
20.2 ... JDBC und Datenbanktreiber ... 1102
20.3 ... Eine Beispielabfrage ... 1104
20.4 ... Zum Weiterlesen ... 1106
21. Einführung in ... 1107
21.1 ... Auszeichnungssprachen ... 1107
21.2 ... Eigenschaften von XML-Dokumenten ... 1108
21.3 ... Die Java-APIs für XML ... 1120
21.4 ... Java Architecture for XML Binding (JAXB) ... 1124
21.5 ... Zum Weiterlesen ... 1131
22. Bits und Bytes, Mathematisches und Geld ... 1133
22.1 ... Bits und Bytes ... 1133
22.2 ... Fließkomma-Arithmetik in Java ... 1148
22.3 ... Die Eigenschaften der Klasse Math ... 1154
22.4 ... Genauigkeit, Wertebereich eines Typs und Überlaufkontrolle * ... 1165
22.5 ... Zufallszahlen: Random, SecureRandom, SplittableRandom ... 1170
22.6 ... Große Zahlen * ... 1175
22.7 ... Mathe bitte strikt * ... 1188
22.8 ... Geld und Währung ... 1190
22.9 ... Zum Weiterlesen ... 1192
23. Testen mit JUnit ... 1193
23.1 ... Softwaretests ... 1193
23.2 ... Das Test-Framework JUnit ... 1194
23.3 ... Wie gutes Design das Testen ermöglicht ... 1208
23.4 ... Aufbau größerer Testfälle ... 1210
23.5 ... Dummy, Fake, Stub und Mock ... 1214
23.6 ... JUnit-Erweiterungen, Testzusätze ... 1215
23.7 ... Zum Weiterlesen ... 1216
24. Die Werkzeuge des JDK ... 1217
24.1 ... Übersicht ... 1217
24.2 ... Java-Quellen übersetzen ... 1218
24.3 ... Die Java-Laufzeitumgebung ... 1221
24.4 ... jlink: der Java Linker ... 1224
24.5 ... Dokumentationskommentare mit Javadoc ... 1225
24.6 ... Das Archivformat JAR ... 1235
24.7 ... Zum Weiterlesen ... 1240
Anhang ... 1241
Index ... 1261
Hersteller: Rheinwerk Verlag GmbH, Rheinwerkallee 4, Bonn, Deutschland, 53229, service@rheinwerk-verlag.de
Warnhinweise und Sicherheitsinformationen
Informationen nach EU Data Act