Java ist auch eine Insel: Einführung, Ausbildung, Paxis
Gespeichert in:
1. Verfasser: | |
---|---|
Format: | Buch |
Sprache: | German |
Veröffentlicht: |
Bonn
Rheinwerk Verlag
2024
|
Ausgabe: | 17., aktualisierte und überarbeitete Auflage |
Schriftenreihe: | Rheinwerk Computing
|
Schlagworte: | |
Online-Zugang: | Inhaltstext Inhaltsverzeichnis |
Beschreibung: | Auf dem Cover: Programmieren mit der Java Platform, Standard Edition 21 ; Java von A bis Z: Einführung Praxis, Referenz ; Von Ausdrücken und Anweisungen zu Klassen und Objekten ; Das Standardwerk |
Beschreibung: | 1223 Seiten Illustrationen 24 cm x 19 cm |
ISBN: | 9783836295444 383629544X |
Internformat
MARC
LEADER | 00000nam a22000008c 4500 | ||
---|---|---|---|
001 | BV049369017 | ||
003 | DE-604 | ||
005 | 20240424 | ||
007 | t| | ||
008 | 231017s2024 gw a||| |||| 00||| ger d | ||
015 | |a 23,N39 |2 dnb | ||
016 | 7 | |a 1303216302 |2 DE-101 | |
020 | |a 9783836295444 |c : EUR 49.90 (DE), EUR 51.30 (AT), CHF 63.90 (freier Preis) |9 978-3-8362-9544-4 | ||
020 | |a 383629544X |9 3-8362-9544-X | ||
024 | 3 | |a 9783836295444 | |
035 | |a (OCoLC)1414562614 | ||
035 | |a (DE-599)DNB1303216302 | ||
040 | |a DE-604 |b ger |e rda | ||
041 | 0 | |a ger | |
044 | |a gw |c XA-DE-NW | ||
049 | |a DE-M347 |a DE-1051 |a DE-1102 |a DE-1050 |a DE-523 |a DE-29T |a DE-706 |a DE-91G |a DE-573 |a DE-703 |a DE-739 |a DE-29 |a DE-20 |a DE-573n |a DE-526 |a DE-83 |a DE-522 | ||
084 | |a ST 250 |0 (DE-625)143626: |2 rvk | ||
084 | |8 1\p |a 004 |2 23sdnb | ||
084 | |a DAT 362 |2 stub | ||
100 | 1 | |a Ullenboom, Christian |e Verfasser |0 (DE-588)123404738 |4 aut | |
245 | 1 | 0 | |a Java ist auch eine Insel |b Einführung, Ausbildung, Paxis |c Christian Ullenboom |
250 | |a 17., aktualisierte und überarbeitete Auflage | ||
264 | 1 | |a Bonn |b Rheinwerk Verlag |c 2024 | |
300 | |a 1223 Seiten |b Illustrationen |c 24 cm x 19 cm | ||
336 | |b txt |2 rdacontent | ||
337 | |b n |2 rdamedia | ||
338 | |b nc |2 rdacarrier | ||
490 | 0 | |a Rheinwerk Computing | |
500 | |a Auf dem Cover: Programmieren mit der Java Platform, Standard Edition 21 ; Java von A bis Z: Einführung Praxis, Referenz ; Von Ausdrücken und Anweisungen zu Klassen und Objekten ; Das Standardwerk | ||
650 | 0 | 7 | |a Java Standard Edition 21 |0 (DE-588)132762754X |2 gnd |9 rswk-swf |
650 | 0 | 7 | |a Java |g Programmiersprache |0 (DE-588)4401313-9 |2 gnd |9 rswk-swf |
653 | |a Eclipse | ||
653 | |a NetBeans | ||
653 | |a IntelliJ IDEA | ||
653 | |a XML | ||
653 | |a Performanz | ||
653 | |a Lambda | ||
653 | |a JDBC | ||
653 | |a JDK | ||
653 | |a JUnit | ||
653 | |a Oracle | ||
653 | |a Objektorientiert programmieren | ||
653 | |a Referenz | ||
653 | |a Datenbanken | ||
653 | |a Programmierung | ||
653 | |a Software-Entwicklung | ||
653 | |a Hand-Buch Grundlagen Kurse Workshops Tutorials Training Ausbildung Studium Informatik | ||
653 | |a Java | ||
653 | |a OOP | ||
689 | 0 | 0 | |a Java |g Programmiersprache |0 (DE-588)4401313-9 |D s |
689 | 0 | |5 DE-604 | |
689 | 1 | 0 | |a Java Standard Edition 21 |0 (DE-588)132762754X |D s |
689 | 1 | |5 DE-604 | |
710 | 2 | |a Rheinwerk Verlag |0 (DE-588)1081738405 |4 pbl | |
856 | 4 | 2 | |m X:MVB |q text/html |u http://deposit.dnb.de/cgi-bin/dokserv?id=d1ddecef001e44ec846f87b275d708dc&prov=M&dok_var=1&dok_ext=htm |3 Inhaltstext |
856 | 4 | 2 | |m DNB Datenaustausch |q application/pdf |u http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=034629013&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |3 Inhaltsverzeichnis |
883 | 1 | |8 1\p |a vlb |d 20230921 |q DE-101 |u https://d-nb.info/provenance/plan#vlb | |
943 | 1 | |a oai:aleph.bib-bvb.de:BVB01-034629013 |
Datensatz im Suchindex
_version_ | 1817348800601128960 |
---|---|
adam_text |
AUF
EINEN
BLICK
1
JAVA
IST
AUCH
EINE
SPRACHE
.
49
2
IMPERATIVE
SPRACHKONZEPTE
.
91
3
KLASSEN
UND
OBJEKTE
.
213
4
ARRAYS
UND
IHRE
ANWENDUNGEN
.
255
5
DER
UMGANG
MIT
ZEICHEN
UND
ZEICHENKETTEN
.
299
6
EIGENE
KLASSEN
SCHREIBEN
.
383
7
OBJEKTORIENTIERTE
BEZIEHUNGSFRAGEN
.
445
8
RECORDS,
SCHNITTSTELLEN,
AUFZAEHLUNGEN,
VERSIEGELTE
KLASSEN
.
507
9
AUSNAHMEN
MUESSEN
SEIN
.
569
10
GESCHACHTELTE
TYPEN
.
631
11 BESONDERE
TYPEN
DER
JAVA
SE
.
649
12
GENERICS T
.
721
13
LAMBDA-AUSDRUECKE
UND
FUNKTIONALE
PROGRAMMIERUNG
.
777
14
ARCHITEKTUR,
DESIGN
UND
ANGEWANDTE
OBJEKTORIENTIERUNG
.
847
15
JAVA
PLATFORM
MODULE
SYSTEM
.
861
16
DIE
KLASSENBIBLIOTHEK
.
883
17
EINFUEHRUNG
IN
DIE
NEBENLAEUFIGE
PROGRAMMIERUNG
.
921
18
EINFUEHRUNG
IN
DATENSTRUKTUREN
UND
ALGORITHMEN
.
959
19
EINFUEHRUNG
IN
GRAFISCHE
OBERFLAECHEN
.
1021
20
EINFUEHRUNG
IN
DATEIEN
UND
DATENSTROEME
.
1047
21
EINFUEHRUNG
INS
DATENBANKMANAGEMENT
MIT
JDBC
.
1083
22
BITS
UND
BYTES,
MATHEMATISCHES
UND
GELD
.
1089
23
TESTEN
MIT
JUNIT
.
1147
24
DIE
WERKZEUGE
DES
JDK
.
1171
INHALT
MATERIALIEN
ZUM
BUCH
.
31
VORWORT
.
33
1
JAVA
IST
AUCH
EINE
SPRACHE
49
1.1
HISTORISCHER
HINTERGRUND
.
50
1.2
WARUM
JAVA
POPULAER
IST
-
DIE
ZENTRALEN
EIGENSCHAFTEN.
52
1.2.1
BYTECODE
.
52
1.2.2
AUSFUEHRUNG
DES
BYTECODES
DURCH
EINE
VIRTUELLE
MASCHINE
.
52
1.2.3
PLATTFORMUNABHAENGIGKEIT
.
53
1.2.4
JAVA
ALS
SPRACHE,
LAUFZEITUMGEBUNG
UND
STANDARDBIBLIOTHEK
.
53
1.2.5
OBJEKTORIENTIERUNG
IN
JAVA
.
54
1.2.6
JAVA
IST
VERBREITET
UND
BEKANNT
.
54
1.2.7
JAVA
IST
SCHNELL-OPTIMIERUNG
UND
JUST-IN-TIME-COMPILATION
.
55
1.2.8
ZEIGER
UND
REFERENZEN
.
57
1.2.9
BRING
DEN
MUELL
RAUS,
GARBAGE-COLLECTOR!
.
58
1.2.10
AUSNAHMEBEHANDLUNG
.
58
1.2.11
DAS
ANGEBOT
AN
BIBLIOTHEKEN
UND
WERKZEUGEN
.
59
1.2.12
VERGLEICHBAR
EINFACHE
SYNTAX
.
60
1.2.13
VERZICHT
AUF
UMSTRITTENE
KONZEPTE
.
61
1.2.14
JAVA
IST
OPEN
SOURCE
.
62
1.2.15
WOFUER
SICH
JAVA
WENIGER
EIGNET
.
62
1.3
JAVA
IM
VERGLEICH
ZU
ANDEREN
SPRACHEN
*
.
63
1.3.1
JAVA
UND
C(++)
.
64
1.3.2
JAVA
UND
JAVASCRIPT
.
64
1.3.3
EIN
WORT
ZU
MICROSOFT,
JAVA
UND
ZU
J++
.
65
1.3.4
JAVA
UND
C#/.NET
.
66
1.4
WEITERENTWICKLUNG
UND
VERLUSTE
.
66
1.4.1
DIE
ENTWICKLUNG
VON
JAVA
UND
SEINE
ZUKUNFTSAUSSICHTEN
.
67
1.4.2
FEATURES,
ENHANCEMENTS
(ERWEITERUNGEN)
UND
EIN
JSR
.
68
1.4.3
APPLETS
.
68
1.4.4
JAVAFX
.
69
1.5
JAVA-PLATTFORMEN:
JAVA
SE,
JAKARTA
EE,
JAVA
ME,
JAVA
CARD
.
70
1.5.1
DIE
JAVA
SE-PLATTFORM
.
70
1.5.2
JAVA
ME:
JAVA
FUER
DIE
KLEINEN
.
72
1.5.3
JAVA
FUER
DIE
GANZ,
GANZ
KLEINEN
.
73
1.5.4
JAVA
FUER
DIE
GROSSEN:
JAKARTA
EE
(EHEMALS
JAVA
EE).
73
1.6
JAVA
SE-IMPLEMENTIERUNGEN
.
74
1.6.1
OPENJDK
.
74
1.6.2
ORACLE
JDK
.
75
1.7
JDK
INSTALLIEREN
.
77
1.7.1
ORACLE
JDK
UNTER
WINDOWS
INSTALLIEREN
.
77
1.8
DAS
ERSTE
PROGRAMM
COMPILIEREN
UND
TESTEN
.
79
1.8.1
99
FLASCHEN
BIER
AN
DER
WAND:
DER
COUNTDOWN
GEHT
WEITER!
.
79
1.8.2
DER
COMPILERLAUF
.
80
1.8.3
DIE
LAUFZEITUMGEBUNG
.
81
1.8.4
HAEUFIGE
COMPILER-UND
INTERPRETER-PROBLEME
.
82
1.9
ENTWICKLUNGSUMGEBUNGEN.
83
1.9.1
INTELLIJ
IDEA
.
83
1.9.2
ECLIPSELDE
.
87
1.9.3
NETBEANS
.
89
1.10
ZUM
WEITERLESEN
.
89
2
IMPERATIVE
SPRACHKONZEPTE
91
2.1
ELEMENTE
DER
PROGRAMMIERSPRACHE
JAVA
.
91
2.1.1
TOKEN
.
92
2.1.2
TEXTKODIERUNGDURCHUNICODE-ZEICHEN
.
93
2.1.3
BEZEICHNER
.
93
2.1.4
LITERALE
.
95
2.1.5
(RESERVIERTE)
SCHLUESSELWOERTER
.
95
2.1.6
ZUSAMMENFASSUNG
DER
LEXIKALISCHEN
ANALYSE
.
97
2.1.7
KOMMENTARE
.
98
2.2
VON
DER
KLASSE
ZUR
ANWEISUNG
.
99
2.2.1
WAS
SIND
ANWEISUNGEN?
.
100
2.2.2
KLASSENDEKLARATION
.
100
2.2.3
DIE
REISE
BEGINNT
AM
MAIN(STRING[])
.
101
2.2.4
DER
ERSTE
METHODENAUFRUF:
PRINTLN
(.)
.
102
2.2.5
ATOMARE
ANWEISUNGEN
UND
ANWEISUNGSSEQUENZEN
.
103
2.2.6
MEHR
ZU
PRINT(.),
PRINTLN
(.)
UND
PRINTF(.)
FUER
BILDSCHIRMAUSGABEN
.
104
2.2.7
DIE
API-DOKUMENTATION
.
106
2.2.8
AUSDRUECKE
.
107
2.2.9
AUSDRUCKSANWEISUNG
.
107
2.2.10
ERSTER
EINBLICK
IN
DIE
OBJEKTORIENTIERUNG
.
108
2.2.11
MODIFIZIERER
.
109
2.2.12
GRUPPIEREN
VON
ANWEISUNGEN
MIT
BLOECKEN
.
109
2.3
DATENTYPEN,
TYPISIERUNG,
VARIABLEN
UND
ZUWEISUNGEN
.
111
2.3.1
PRIMITIVE
DATENTYPEN
IM
UEBERBLICK
.
112
2.3.2
VARIABLENDEKLARATIONEN
.
115
2.3.3
AUTOMATISCHES
FESTSTELLEN
DER
TYPEN
MIT
VAR
.
117
2.3.4
FINALE
VARIABLEN
UND
DER
MODIFIZIERER
FINAL
.
118
2.3.5
KONSOLENEINGABEN
.
119
2.3.6
WAHRHEITSWERTE
.
121
2.3.7
GANZZAHLIGE
DATENTYPEN
.
121
2.3.8
UNTERSTRICHE
IN
ZAHLEN
.
123
2.3.9
ALPHANUMERISCHE
ZEICHEN
.
124
2.3.10
FLIESSKOMMAZAHLEN
MIT
DEN
DATENTYPEN
FLOAT
UND
DOUBLE
.
124
2.3.11
GUTE
NAMEN,
SCHLECHTE
NAMEN
.
126
2.3.12
KEINE
AUTOMATISCHE
INITIALISIERUNG
VON
LOKALEN
VARIABLEN
.
127
2.4
AUSDRUECKE,
OPERANDEN
UND
OPERATOREN
.
127
2.4.1
ZUWEISUNGSOPERATOR
.
128
2.4.2
ARITHMETISCHE
OPERATOREN
.
130
2.4.3
UNAERES
MINUS
UND
PLUS
.
133
2.4.4
PRAEFIX-ODER
POSTFIX-INKREMENT
UND-DEKREMENT
.
133
2.4.5
ZUWEISUNG
MIT
OPERATION
(VERBUNDOPERATOR)
.
135
2.4.6
DIE
RELATIONALEN
OPERATOREN
UND
DIE
GLEICHHEITSOPERATOREN
.
137
2.4.7
LOGISCHE
OPERATOREN:
NICHT,
UND,
ODER,
XOR
.
139
2.4.8
KURZSCHLUSS-OPERATOREN
.
140
2.4.9
DER
RANG
DER
OPERATOREN
IN
DER
AUSWERTUNGSREIHENFOLGE
.
141
2.4.10
DIE
TYPUMWANDLUNG
(DAS
CASTING)
.
144
2.4.11
UEBERLADENES
PLUS
FUER
STRINGS
.
150
2.4.12
OPERATOR
VERMISST
*
.
151
2.5
BEDINGTE
ANWEISUNGEN
ODER
FALLUNTERSCHEIDUNGEN
.
151
2.5.1
VERZWEIGUNG
MIT
DER
IF-ANWEISUNG
.
152
2.5.2
DIE
ALTERNATIVE
MIT
EINER
IF-ELSE-ANWEISUNG
WAEHLEN
.
154
2.5.3
DER
BEDINGUNGSOPERATOR
.
158
2.5.4
DIE
SWITCH-ANWEISUNG
BIETET
DIE
ALTERNATIVE
.
161
2.5.5
SWITCH-AUSDRUECKE
.
168
2.6
IMMER
DAS
GLEICHE
MIT
DEN
SCHLEIFEN
.
170
2.6.1
DIE
WHILE-SCHLEIFE
.
171
2.6.2
DIE
DO-WHILE-SCHLEIFE
.
173
2.6.3
DIEFOR-SCHLEIFE
.
175
2.6.4
SCHLEIFENBEDINGUNGEN
UND
VERGLEICHE
MIT
==
*
.
179
2.6.5
SCHLEIFENABBRUCH
MIT
BREAK
UND
ZURUECK
ZUM
TEST
MIT
CONTINUE
.
181
2.6.6
BREAK
UND
CONTINUE
MIT
MARKEN
*
.
184
2.7
METHODEN
EINER
KLASSE
.
188
2.7.1
BESTANDTEILE
EINER
METHODE
.
188
2.7.2
SIGNATUR-BESCHREIBUNG
IN
DER
JAVA-API
.
190
2.7.3
AUFRUF
EINER
METHODE
.
191
2.7.4
METHODEN
OHNE
PARAMETER
DEKLARIEREN
.
192
2.7.5
STATISCHE
METHODEN
(KLASSENMETHODEN)
.
193
2.7.6
PARAMETER,
ARGUMENT
UND
WERTUEBERGABE
.
194
2.7.7
METHODEN
VORZEITIG
MIT
RETURN
BEENDEN
.
196
2.7.8
METHODEN
MIT
RUECKGABEN
.
197
2.7.9
METHODEN
UEBERLADEN
.
202
2.7.10
GUELTIGKEITSBEREICH
.
204
2.7.11
VORGEGEBENER
WERT
FUER
NICHT
AUFGEFUEHRTE
ARGUMENTE
*
.
206
2.7.12
REKURSIVE
METHODEN
*
.
206
2.7.13
DIE
TUERME
VON
HANOI
*
.
210
2.8
ZUM
WEITERLESEN
.
212
3
KLASSEN
UND
OBJEKTE
213
3.1
OBJEKTORIENTIERTE
PROGRAMMIERUNG
(OOP)
.
213
3.1.1
WARUM
UEBERHAUPT
OOP?
.
214
3.1.2
DENK
ICH
AN
JAVA,
DENK
ICH
AN
WIEDERVERWENDBARKEIT
.
214
3.2
EIGENSCHAFTEN
EINER
KLASSE
.
215
3.2.1
KLASSENARBEIT
MIT
POINT
.
216
3.3
NATUERLICH
MODELLIEREN
MIT
DER
UML
(UNIFIED
MODELING
LANGUAGE)
*
.
217
3.3.1
WICHTIGE
DIAGRAMMTYPEN
DER
UML
*
.
217
3.4
NEUE
OBJEKTE
ERZEUGEN
.
219
3.4.1
EIN
EXEMPLAR
EINER
KLASSE
MIT
DEM
SCHLUESSELWORT
NEW
ANLEGEN
.
219
3.4.2
DEKLARIEREN
VON
REFERENZVARIABLEN
.
219
3.4.3
JETZT
MACH
MAL
'
NEN
PUNKT:
ZUGRIFF
AUF
OBJEKTVARIABLEN
UND
-METHODEN
.
220
3.4.4
DER
ZUSAMMENHANG
VON
NEW,
HEAP
UND
GARBAGE-COLLECTOR
.
225
3.4.5
UEBERBLICK
UEBER
POINT-METHODEN
.
226
3.4.6
KONSTRUKTOREN
NUTZEN
.
230
3.5
ZZZZZNAKE
.
231
3.6
PAKETE
SCHNUEREN,
IMPORTE
UND
COMPILATIONSEINHEITEN
.
233
3.6.1
JAVA-PAKETE
.
234
3.6.2
PAKETE
DER
STANDARDBIBLIOTHEK
.
234
3.6.3
VOLLE
QUALIFIZIERUNG
UND
IMPORT-DEKLARATION
.
234
3.6.4
MIT
IMPORT
PL.P2.*
ALLE
TYPEN
EINES
PAKETS
ERREICHEN
.
236
3.6.5
HIERARCHISCHE
STRUKTUREN
UEBER
PAKETE
UND
DIE
SPIEGELUNG
IM
DATEISYSTEM
.
237
3.6.6
DIE
PACKAGE-DEKLARATION
.
237
3.6.7
UNBENANNTES
PAKET
(DEFAULT
PACKAGE)
.
239
3.6.8
COMPILATIONSEINHEIT
(COMPILATION
UNIT)
.
239
3.6.9
STATISCHER
IMPORT*
.
240
3.7
MIT
REFERENZEN
ARBEITEN,
VIELFALT,
IDENTITAET,
GLEICHWERTIGKEIT
.
241
3.7.1
NULL-REFERENZ
UND
DIE
FRAGE
DER
PHILOSOPHIE
.
241
3.7.2
ALLES
AUF
NULL?
REFERENZEN
TESTEN
.
243
3.7.3
ZUWEISUNGEN
BEI
REFERENZEN
.
244
3.7.4
METHODEN
MIT
REFERENZTYPEN
ALS
PARAMETER
.
246
3.7.5
IDENTITAET
VON
OBJEKTEN
.
250
3.7.6
GLEICHWERTIGKEIT
UND
DIE
METHODE
.
251
3.8
ZUM
WEITERLESEN
.
253
4
ARRAYS
UND
IHRE
ANWENDUNGEN
255
4.1
EINFACHE
FELDARBEIT
.
255
4.1.1
GRUNDBESTANDTEILE
.
256
4.1.2
DEKLARATION
VON
ARRAY-VARIABLEN
.
257
4.1.3
ARRAY-OBJEKTE
MIT
NEW
ERZEUGEN
.
258
4.1.4
ARRAYS
MIT
{
INHALT
}
.
259
4.1.5
DIE
LAENGE
EINES
ARRAYS
UEBER
DIE
OBJEKTVARIABLE
LENGTH
AUSLESEN
.
260
4.1.6
ZUGRIFF
AUF
DIE
ELEMENTE
UEBER
DEN
INDEX
.
260
4.1.7
TYPISCHE
ARRAY-FEHLER
.
262
4.1.8
ARRAYS
AN
METHODEN
UEBERGEBEN
.
264
4.1.9
MEHRERE
RUECKGABEWERTE
*
.
264
4.1.10
VORINITIALISIERTE
ARRAYS
.
265
4.2
DIE
ERWEITERTE
FOR-SCHLEIFE
.
267
4.3
METHODE
MIT
VARIABLER
ARGUMENTANZAHL
(VARARGS)
.
271
4.3.1
SYSTEM.OUT.PRINTF(.)
NIMMT
EINE
BELIEBIGE
ANZAHL
VON
ARGUMENTEN
AN
.
271
4.3.2
DURCHSCHNITT
FINDEN
VON
VARIABLEN
ARGUMENTEN
.
272
4.3.3
VARARGS-DESIGNTIPPS
*
.
273
4.4
MEHRDIMENSIONALE
ARRAYS
*
.
273
4.4.1
NICHTRECHTECKIGE
ARRAYS
*
.
276
4.5
BIBLIOTHEKSUNTERSTUETZUNG
VON
ARRAYS
.
279
4.5.1
KLONEN
KANN
SICH
LOHNEN-ARRAYS
VERMEHREN
.
279
4.5.2
WARUM
KOENNEN
ARRAYS
SO
WENIG?
.
280
4.53
ARRAY-INHALTE
KOPIEREN
.
280
4.6
DIE
KLASSE
ARRAYS
ZUM
VERGLEICHEN,
FUELLEN,
SUCHEN
UND
SORTIEREN
NUTZEN
.
282
4.6.1
EINE
LANGE
SCHLANGE
.
292
4.7
DER
EINSTIEGSPUNKT
FUER
DAS
LAUFZEITSYSTEM:
MAIN(.)
.
295
4.7.1
KORREKTE
DEKLARATION
DER
STARTMETHODE
.
295
4.7.2
KOMMANDOZEILENARGUMENTEVERARBEITEN
.
296
4.73
DER
RUECKGABETYP
VON
MAIN(.)
UND
SYSTEM.EXIT(INT)
*
.
297
4.8
ZUM
WEITERLESEN
.
298
5
DER
UMGANG
MIT
ZEICHEN
UND
ZEICHENKETTEN
299
5.1
VON
ASCII
UEBER
ISO-8859-1
ZU
UNICODE
.
299
5.1.1
ASCII
.
299
5.1.2
ISO/IEC
8859-1
.
300
5.13
UNICODE
.
301
5.1.4
UNICODE-ZEICHENKODIERUNG
.
303
5.1.5
ESCAPE-SEQUENZEN/FLUCHTSYMBOLE
.
304
5.1.6
SCHREIBWEISE
FUER
UNICODE-ZEICHEN
UND
UNICODE-ESCAPES
.
305
5.1.7
JAVA-VERSIONEN
GEHEN
MIT
DEM
UNICODE-STANDARD
HAND
IN
HAND
*
.
306
5.2
DATENTYPEN
FUER
ZEICHEN
UND
ZEICHENFOLGEN
.
307
5.3
DIE
CHARACTER-KLASSE
.
308
5.3.1
IST
DAS
SO?
.
308
5.3.2
ZEICHEN
IN
GROSSBUCHSTABEN/KLEINBUCHSTABEN
KONVERTIEREN
.
311
5.3.3
VOM
ZEICHEN
ZUM
STRING
.
312
5.3.4
VON
CHAR
IN
INT:
VOM
ZEICHEN
ZUR
ZAHL
*
.
312
5.4
ZEICHENFOLGEN
.
313
5.5
DIE
KLASSE
STRING
UND
IHRE
METHODEN
.
315
5.5.1
STRING-LITERALE
ALS
STRING-OBJEKTE
FUER
KONSTANTE
ZEICHENKETTEN
.
316
5.5.2
KONKATENATION
MIT+
.
316
5.5.3
MEHRZEILIGE
TEXTBLOECKE
MIT
.
.
317
5.5.4
STRING-LAENGE
UND
TEST
AUF
LEER-STRING
.
322
5.5.5
ZUGRIFF
AUF
EIN
BESTIMMTES
ZEICHEN
MIT
CHARAT(INT)
.
323
5.5.6
NACH
ENTHALTENEN
ZEICHEN
UND
ZEICHENFOLGEN
SUCHEN
.
324
5.5.7
DAS
HANGMAN-SPIEL
.
327
5.5.8
GUT,
DASS
WIR
VERGLICHEN
HABEN
.
329
5.5.9
STRING-TEILE
EXTRAHIEREN
.
334
5.5.10
STRINGS
ANHAENGEN,
ZUSAMMENFUEGEN,
GROSS-/KLEINSCHREIBUNG
UND
WEISSRAUM
.
338
5.5.11
GESUCHT,
GEFUNDEN,
ERSETZT
.
342
5.5.12
STRING-OBJEKTE
MIT
KONSTRUKTOREN
UND
AUS
WIEDERHOLUNGEN
ERZEUGEN
*
.
344
5.6
VERAENDERBARE
ZEICHENKETTEN
MIT
STRINGBUILDER
UND
.
348
5.6.1
ANLEGEN
VON
STRINGBUILDER-OBJEKTEN
.
348
5.6.2
STRINGBUILDER
IN
ANDERE
ZEICHENKETTENFORMATE
KONVERTIEREN
.
349
5.6.3
ZEICHEN(FOLGEN)
ERFRAGEN
.
349
5.6.4
DATEN
ANHAENGEN
.
350
5.6.5
ZEICHEN(FOLGEN)
SETZEN,
LOESCHEN
UND
UMDREHEN
.
351
5.6.6
LAENGE
UND
KAPAZITAET
EINES
STRINGBUILDER-OBJEKTS
*
.
353
5.6.7
VERGLEICH
VON
STRINGBUILDER-EXEMPLAREN
UND
STRINGS
MIT
STRINGBUILDER
.
355
5.6.8
HASHCODE()
BEI
STRINGBUILDER
*
.
356
5.7
CHARSEQUENCE
ALS
BASISTYP
.
357
5.8
KONVERTIEREN
ZWISCHEN
PRIMITIVEN
UND
STRINGS
.
360
5.8.1
UNTERSCHIEDLICHE
TYPEN
IN
STRING-REPRAESENTATIONEN
KONVERTIEREN
.
360
5.8.2
STRING-INHALT
IN
EINEN
PRIMITIVEN
WERT
KONVERTIEREN
.
362
5.8.3
STRING-REPRAESENTATION
IN
DEN
FORMATEN
BINAER,
HEX
UND
OKTAL
*
.
364
5.9
STRINGS
ZUSAMMENHAENGEN
(KONKATENIEREN)
.
368
5.9.1
STRINGS
MIT
STRINGJOINER
ZUSAMMENHAENGEN
.
368
5.10
ZERLEGEN
VON
ZEICHENKETTEN
.
370
5.10.1
SPLITTEN
VON
ZEICHENKETTEN
MIT
SPLIT(.)
.
371
5.10.2
YES
WE
CAN,
YES
WE
SCAN
-
DIE
KLASSE
SCANNER
.
372
5.11
AUSGABEN
FORMATIEREN
.
375
5.11.1
FORMATIEREN
UND
AUSGEBEN
MIT
FORMAT()
.
375
5.12
ZUM
WEITERLESEN
.
381
6
EIGENE
KLASSEN
SCHREIBEN
383
6.1
EIGENE
KLASSEN
MIT
EIGENSCHAFTEN
DEKLARIEREN
.
383
6.1.1
OBJEKTVARIABLENDEKLARIEREN
.
384
6.1.2
METHODEN
DEKLARIEREN
.
387
6.1.3
VERDECKTE
(SHADOWED)
VARIABLEN
.
389
6.1.4
DIE
THIS-REFERENZ
.
391
6.2
PRIVATSPHAERE
UND
SICHTBARKEIT
.
394
6.2.1
FUER
DIE
OEFFENTLICHKEIT:
PUBLIC
.
395
6.2.2
KEIN
PUBLIC
VIEWING
-
PASSWOERTER
SIND
PRIVAT
.
395
6.2.3
WIESO
NICHT
FREIE
METHODEN
UND
VARIABLEN
FUER
ALLE?
.
397
6.2.4
PRIVAT
IST
NICHT
GANZ
PRIVAT:
ES
KOMMT
DARAUF
AN,
WER'S
SIEHT
*
.
397
6.2.5
ZUGRIFFSMETHODEN
FUER
OBJEKTVARIABLEN
DEKLARIEREN
.
398
6.2.6
SETTER
UND
GETTER
NACH
DER
JAVABEANS-SPEZIFIKATION
.
398
6.2.7
PAKETSICHTBAR
.
401
6.2.8
ZUSAMMENFASSUNG
ZUR
SICHTBARKEIT
.
402
6.3
EINE
FUER
ALLE
-
STATISCHE
METHODEN
UND
KLASSENVARIABLEN
.
405
6.3.1
WARUM
STATISCHE
EIGENSCHAFTEN
SINNVOLL
SIND
.
406
6.3.2
STATISCHE
EIGENSCHAFTEN
MIT
STATIC
.
406
6.3.3
STATISCHE
EIGENSCHAFTEN
UEBER
REFERENZEN
NUTZEN?
*
.
408
6.3.4
WARUM
DIE
GROSS-UND
KLEINSCHREIBUNG
WICHTIG
IST
*
.
409
6.3.5
STATISCHE
VARIABLEN
ZUM
DATENAUSTAUSCH
*
.
409
6.3.6
STATISCHE
EIGENSCHAFTEN
UND
OBJEKTEIGENSCHAFTEN
*
.
411
6.4
KONSTANTEN
UND
AUFZAEHLUNGEN
.
412
6.4.1
KONSTANTEN
UEBER
STATISCHE
FINALE
VARIABLEN
.
412
6.4.2
TYPUNSICHERE
AUFZAEHLUNGEN
.
413
6.4.3
AUFZAEHLUNGSTYPEN:
TYPSICHERE
AUFZAEHLUNGEN
MIT
ENUM
.
415
6.5
OBJEKTE
ANLEGEN
UND
ZERSTOEREN
.
420
6.5.1
KONSTRUKTOREN
SCHREIBEN
.
420
6.5.2
VERWANDTSCHAFT
VON
METHODE
UND
KONSTRUKTOR
.
422
6.5.3
DER
STANDARD-KONSTRUKTOR
(DEFAULT
CONSTRUCTOR)
.
423
6.5.4
PARAMETRISIERTE
UND
UEBERLADENE
KONSTRUKTOREN
.
424
6.5.5
COPY-KONSTRUKTOR
.
426
6.5.6
EINEN
ANDEREN
KONSTRUKTOR
DER
GLEICHEN
KLASSE
MIT
THIS(.)
AUFRUFEN
.
427
6.5.7
IMMUTABLE-OBJEKTE
UND
WITHER-METHODEN
.
430
6.5.8
IHR
FEHLT
UNS
NICHT-DER
GARBAGE-COLLECTOR
.
432
6.6
KLASSEN
UND
OBJEKTINITIALISIERUNG
*
.
434
6.6.1
INITIALISIERUNG
VON
OBJEKTVARIABLEN
.
434
6.6.2
STATISCHE
BLOECKE
ALS
KLASSENINITIALISIERER
.
436
6.6.3
INITIALISIERUNG
VON
KLASSENVARIABLEN
.
437
6.6.4
EINCOMPILIERTE
BELEGUNGEN
DER
KLASSENVARIABLEN
.
437
6.6.5
EXEMPLARINITIALISIERER
(INSTANZINITIALISIERER)
.
438
6.6.6
FINALE
WERTE
IM
KONSTRUKTOR
UND
IN
STATISCHEN
BLOECKEN
SETZEN
.
441
6.7
ZUM
WEITERLESEN
.
443
7
OBJEKTORIENTIERTE
BEZIEHUNGSFRAGEN
445
7.1
ASSOZIATIONEN
ZWISCHEN
OBJEKTEN
.
445
7.1.1
UNIDIREKTIONALE
I:L-BEZIEHUNG
.
446
7.1.2
ZWEI
FREUNDE
MUESST
IHR
WERDEN
-
BIDIREKTIONALE
L:L-BEZIEHUNGEN
.
448
7.1.3
UNIDIREKTIONALE
L:N-BEZIEHUNG
.
449
7.2
VERERBUNG
.
455
7.2.1
VERERBUNG
IN
JAVA
.
456
7.2.2
EREIGNISSE
MODELLIEREN
.
456
7.2.3
DIE
IMPLIZITE
BASISKLASSE
JAVA.LANG.OBJECT
.
458
7.2.4
EINFACH-UND
MEHRFACHVERERBUNG
*
.
459
7.2.5
SEHEN
KINDER
ALLES?
DIE
SICHTBARKEIT
PROTECTED
.
459
7.2.6
KONSTRUKTOREN
IN
DER
VERERBUNG
UND
SUPER(.)
.
460
7.3
TYPEN
IN
HIERARCHIEN
.
465
7.3.1
AUTOMATISCHE
UND
EXPLIZITE
TYPUMWANDLUNG
.
466
7.3.2
DAS
SUBSTITUTIONSPRINZIP
.
469
7.3.3
TYPEN
MIT
DEM
INSTANCEOF-OPERATOR
TESTEN
.
471
7.3.4
PATTERN-MATCHING
BEI
INSTANCEOF
.
474
7.3.5
PATTERN-MATCHING
BEI
SWITCH
.
476
7.4
METHODEN
UEBERSCHREIBEN
.
479
7.4.1
METHODEN
IN
UNTERKLASSEN
MIT
NEUEM
VERHALTEN
AUSSTATTEN
.
479
7.4.2
MIT
SUPER
AN
DIE
ELTERN
.
483
7.5
DRUM
PRUEFE,
WER
SICH
DYNAMISCH
BINDET
.
485
7.5.1
GEBUNDEN
AN
TOSTRING()
.
486
7.5.2
IMPLEMENTIERUNG
VON
SYSTEM.OUT.PRINTLN(OBJECT)
.
487
7.6
FINALE
KLASSEN
UND
FINALE
METHODEN
.
488
7.6.1
FINALE
KLASSEN
.
488
7.6.2
NICHT
UEBERSCHREIBBARE
(FINALE)
METHODEN
.
489
7.7
ABSTRAKTE
KLASSEN
UND
ABSTRAKTE
METHODEN
.
490
7.7.1
ABSTRAKTE
KLASSEN
.
491
7.7.2
ABSTRAKTE
METHODEN
.
'
492
7.8
WEITERES
ZUM
UEBERSCHREIBEN
UND
DYNAMISCHEN
BINDEN
.
499
7.8.1
NICHT
DYNAMISCH
GEBUNDEN
BEI
PRIVATEN,
STATISCHEN
UND
FINALEN
METHODEN
.
499
7.8.2
KOVARIANTE
RUECKGABETYPEN
.
500
7.8.3
ARRAY-TYPEN
UND
KOVARIANZ
*
.
501
7.8.4
DYNAMISCH
GEBUNDEN
AUCH
BEI
KONSTRUKTORAUFRUFEN
*
.
502
7.8.5
KEINE
DYNAMISCHE
BINDUNG
BEI
UEBERDECKTEN
OBJEKTVARIABLEN
*
.
504
7.9
ZUM
WEITERLESEN
UND
PROGRAMMIERAUFGABE
.
505
8
RECORDS,
SCHNITTSTELLEN,
AUFZAEHLUNGEN,
VERSIEGELTE
KLASSEN
507
8.1
RECORDS
.
507
8.1.1
EINFACHE
RECORDS
.
507
8.1.2
RECORDS
MIT
METHODEN
.
509
8.1.3
KONSTRUKTOREN
VON
RECORDS
ANPASSEN
.
511
8.1.4
KONSTRUKTOREN
ERGAENZEN
.
513
8.1.5
RECORD-PATTERNS
ZUR
DESTRUKTURIERUNG
.
514
8.1.6
RECORDS:
ZUSAMMENFASSUNG
.
518
8.2
SCHNITTSTELLEN
.
518
8.2.1
SCHNITTSTELLEN
SIND
NEUE
TYPEN
.
518
8.2.2
SCHNITTSTELLEN
DEKLARIEREN
.
519
8.2.3
ABSTRAKTE
METHODEN
IN
SCHNITTSTELLEN
.
519
8.2.4
IMPLEMENTIEREN
VON
SCHNITTSTELLEN
.
520
8.2.5
EIN
POLYMORPHIE-BEISPIEL
MIT
SCHNITTSTELLEN
.
523
8.2.6
RECORDS
IMPLEMENTIEREN
SCHNITTSTELLEN
.
525
8.2.7
DIE
MEHRFACHVERERBUNG
BEI
SCHNITTSTELLEN
.
526
8.2.8
KEINE
KOLLISIONSGEFAHR
BEI
MEHRFACHVERERBUNG
*
.
529
8.2.9
ERWEITERN
VON
INTERFACES-SUBINTERFACES
.
530
8.2.10
KONSTANTENDEKLARATIONEN
BEI
SCHNITTSTELLEN
.
531
8.2.11
NACHTRAEGLICHES
IMPLEMENTIEREN
VON
SCHNITTSTELLEN
*
.
531
8.2.12
STATISCHE
AUSPROGRAMMIERTE
METHODEN
IN
SCHNITTSTELLEN
.
532
8.2.13
ERWEITERN
UND
AENDERN
VON
SCHNITTSTELLEN
.
534
8.2.14
DEFAULT-METHODEN
.
536
8.2.15
ERWEITERTE
SCHNITTSTELLEN
DEKLARIEREN
UND
NUTZEN
.
537
8.2.16
OEFFENTLICHE
UND
PRIVATE
SCHNITTSTELLENMETHODEN
.
541
8.2.17
ERWEITERTE
SCHNITTSTELLEN,
MEHRFACHVERERBUNG
UND
MEHRDEUTIGKEITEN
*
.
541
8.2.18
BAUSTEINE
BILDEN
MIT
DEFAULT-METHODEN
*
.
545
8.2.19
MARKIERUNGSSCHNITTSTELLEN*
.
548
8.2.20
(ABSTRAKTE)
KLASSEN
UND
SCHNITTSTELLEN
IM
VERGLEICH
.
549
8.3
AUFZAEHLUNGSTYPEN
.
550
8.3.1
METHODEN
AUF
ENUM-OBJEKTEN
.
550
8.3.2
AUFZAEHLUNGEN
MIT
EIGENEN
METHODEN
*
.
554
8.3.3
ENUM
MIT
EIGENEN
KONSTRUKTOREN
UND
INITIAIISIERERN
.
556
8.3.4
ENUM
KANN
SCHNITTSTELLEN
IMPLEMENTIEREN
.
559
8.4
VERSIEGELTE
KLASSEN
UND
SCHNITTSTELLEN
.
560
8.4.1
VERSIEGELTE
KLASSEN
UND
SCHNITTSTELLEN
(SEALED
CLASSES/INTERFACES)
.
562
8.4.2
UNTERKLASSEN
SIND
FINAL,
SEALED,
NON-SEALED
.
564
8.4.3
VOLLSTAENDIGE
ABDECKUNG
VON
AUFZAEHLUNGEN
.
564
8.4.4
ABKUERZENDESCHREIBWEISEN
.
565
8.4.5
VERSIEGELTE
SCHNITTSTELLEN
UND
RECORDS
.
566
8.5
ZUM
WEITERLESEN
.
568
9
AUSNAHMEN
MUESSEN
SEIN
569
9.1
PROBLEMBEREICHE
EINZAEUNEN
.
570
9.1.1
EXCEPTIONS
IN
JAVA
MITTRY
UND
CATCH
.
570
9.1.2
GEPRUEFTE
UND
UNGEPRUEFTE
AUSNAHMEN
.
571
9.1.3
EINE
NUMBERFORMATEXCEPTION
FLIEGT
(UNGEPRUEFTE
AUSNAHME)
.
571
9.1.4
DATUM-ZEITSTEMPEL
IN
TEXTDATEI
ANHAENGEN
(GEPRUEFTE
AUSNAHME)
.
573
9.1.5
WIEDERHOLUNG
ABGEBROCHENER
BEREICHE
*
.
576
9.1.6
BITTE
NICHT
SCHLUCKEN
-
LEERE
CATCH-BLOECKE
.
576
9.1.7
MEHRERE
AUSNAHMEN
AUFFANGEN
.
577
9.1.8
ZUSAMMENFASSEN
GLEICHER
CATCH-BLOECKE
MIT
DEM
MULTI-CATCH
.
578
9.2
AUSNAHMEN
MIT
THROWS
NACH
OBEN
REICHEN
.
579
9.2.1
THROWS
BEI
KONSTRUKTOREN
UND
METHODEN
.
579
9.3
DIE
KLASSENHIERARCHIE
DER
AUSNAHMEN
.
580
9.3.1
EIGENSCHAFTEN
DES
EXCEPTION-OBJEKTS
.
580
9.3.2
BASISTYP
THROWABLE
.
581
9.3.3
DIE
EXCEPTION-HIERARCHIE
.
582
9.3.4
OBERAUSNAHMEN
AUFFANGEN
.
583
9.3.5
SCHON
GEFANGEN?
.
585
9.3.6
ABLAUF
EINER
AUSNAHMESITUATION
.
586
9.3.7
NICHT
ZU
ALLGEMEIN
FANGEN!
.
586
9.3.8
BEKANNTE
RUNTIMEEXCEPTION-KLASSEN
.
588
9.3.9
KANN
MAN
ABFANGEN,
MUSS
MAN
ABER
NICHT
.
589
9.4
ABSCHLUSSBEHANDLUNG
MIT
FINAHY
.
590
9.5
AUSLOESEN
EIGENER
EXCEPTIONS
.
595
9.5.1
MITTHROW
AUSNAHMEN
AUSLOESEN
.
595
9.5.2
VORHANDENE
RUNTIME-AUSNAHMETYPEN
KENNEN
UND
NUTZEN
.
597
9.5.3
PARAMETER
TESTEN
UND
GUTE
FEHLERMELDUNGEN
.
600
9.5.4
NEUE
EXCEPTION-KLASSEN
DEKLARIEREN
.
601
9.5.5
EIGENE
AUSNAHMEN
ALS
UNTERKLASSEN
VON
EXCEPTION
ODER
RUNTIMEEXCEPTION?
.
603
9.5.6
AUSNAHMEN
ABFANGEN
UND
WEITERLEITEN
*
.
606
9.5.7
AUFRUF-STACK
VON
AUSNAHMEN
VERAENDERN
*
.
607
9.5.8
GESCHACHTELTE
AUSNAHMEN
*
.
608
9.6
TRY
MIT
RESSOURCEN
(AUTOMATISCHES
RESSOURCEN-MANAGEMENT)
.
611
9.6.1
TRY
MIT
RESSOURCEN
.
612
9.6.2
DIE
SCHNITTSTELLE
AUTOCLOSEABLE
.
613
9.6.3
AUSNAHMEN
VOM
CLOSE()
.
614
9.6.4
TYPEN,
DIE
AUTOCLOSEABLE
UND
CLOSEABLE
SIND
.
615
9.6.5
MEHRERE
RESSOURCEN
NUTZEN
.
616
9.6.6
TRY
MIT
RESSOURCEN
AUF
NULL-RESSOURCEN
.
618
9.6.7
UNTERDRUECKTE
AUSNAHMEN
*
.
618
9.7
BESONDERHEITEN
BEIDER
AUSNAHMEBEHANDLUNG*
.
621
9.7.1
RUECKGABEWERTE
BEI
AUSGELOESTEN
AUSNAHMEN
.
622
9.7.2
AUSNAHMEN
UND
RUECKGABEN
VERSCHWINDEN
-
DAS
DUO
RETURN
UND
FINALLY
.
622
9.7.3
THROWS
BEI
UEBERSCHRIEBENEN
METHODEN
.
623
9.7.4
NICHT
ERREICHBARE
CATCH-KLAUSELN
.
625
9.8
HARTE
FEHLER
-
ERROR
*
.
627
9.9
ASSERTIONS*
.
627
9.9.1
ASSERTIONS
IN
EIGENEN
PROGRAMMEN
NUTZEN
.
628
9.9.2
ASSERTIONS
AKTIVIEREN
UND
LAUFZEIT-ERRORS
.
628
9.9.3
ASSERTIONS
FEINER
AKTIVIEREN
ODER
DEAKTIVIEREN
.
630
9.10
ZUM
WEITERLESEN
.
630
10
GESCHACHTELTE
TYPEN
631
10.1
GESCHACHTELTE
KLASSEN,
SCHNITTSTELLEN
UND
AUFZAEHLUNGEN
.
631
10.2
STATISCHE
GESCHACHTELTE
TYPEN
.
633
10.3
NICHTSTATISCHE
GESCHACHTELTE
TYPEN
.
635
10.3.1
EXEMPLARE
INNERER
KLASSEN
ERZEUGEN
.
635
10.3.2
DIE
THIS-REFERENZ
.
636
10.3.3
VOM
COMPILER
GENERIERTE
KLASSENDATEIEN
*
.
637
10.4
LOKALE
KLASSEN
.
638
10.4.1
BEISPIEL
MIT
EIGENER
KLASSENDEKLARATION
.
638
10.4.2
LOKALE
KLASSE
FUER
EINEN
TIMER
NUTZEN
.
639
10.5
ANONYME
INNERE
KLASSEN
.
639
10.5.1
NUTZUNG
EINER
ANONYMEN
INNEREN
KLASSE
FUER
DEN
TIMER
.
640
10.5.2
UMSETZUNG
INNERER
ANONYMER
KLASSEN
*
.
641
10.5.3
KONSTRUKTOREN
INNERER
ANONYMER
KLASSEN
.
642
10.6
VERMISCHTES
.
644
10.6.1
ZUGRIFF
AUF
LOKALE
VARIABLEN
AUS
LOKALEN
UND
ANONYMEN
KLASSEN
*
.
644
10.6.2
THIS
IN
UNTERKLASSEN
*
.
644
10.6.3
GESCHACHTELTE
KLASSEN
GREIFEN
AUF
PRIVATE
EIGENSCHAFTEN
ZU
.
645
10.6.4
NESTER
.
647
10.7
ZUM
WEITERLESEN
.
648
11
BESONDERE
TYPEN
DER
JAVA
SE
649
11.1
OBJECT
IST
DIE
MUTTER
ALLER
KLASSEN
.
650
11.1.1
KLASSENOBJEKTE
.
650
11.1.2
OBJEKTIDENTIFIKATION
MIT
TOSTRING()
.
651
11.1.3
OBJEKTGLEICHWERTIGKEIT
MIT
EQUALS(.)
UND
IDENTITAET
.
653
11.1.4
KLONEN
EINES
OBJEKTS
MIT
CLONE()
*
.
659
11.1.5
HASHWERTE
UEBER
HASHCODE()
LIEFERN
*
.
664
11.1.6
SYSTEM.IDENTITYHASHCODE(.)
UND
DAS
PROBLEM
DER
NICHT
EINDEUTIGEN
OBJEKTVERWEISE
*
.
671
11.1.7
SYNCHRONISATION
*
.
672
11.2
SCHWACHE
REFERENZEN
UND
CLEANER
.
672
11.3
DIE
UTILITY-KLASSE
JAVA.UTIL.OBJECTS
.
673
11.3.1
EINGEBAUTE
NULL-TESTS
FUER
EQUALS(.)/HASHCODE()
.
674
11.3.2
OBJECTS.TOSTRING(.)
.
675
11.3.3
NULL-PRUEFUNGEN
MIT
EINGEBAUTER
AUSNAHMEBEHANDLUNG
.
675
11.3.4
TESTSAUFNULL
.
676
11.3.5
INDEXBEZOGENE
PROGRAMMARGUMENTE
AUF
KORREKTHEIT
PRUEFEN
.
677
11.4
VERGLEICHEN
VON
OBJEKTEN
UND
ORDNUNG
HERSTELLEN
.
677
11.4.1
NATUERLICH
GEORDNET
ODER
NICHT?
.
678
11.4.2
COMPARE*()-METHODE
DER
SCHNITTSTELLEN
COMPARABLE
UND
COMPARATOR
.
679
11.4.3
RUECKGABEWERTE
KODIEREN
DIE
ORDNUNG
.
680
11.4.4
MIT
EINEM
BEISPIEL-COMPARATOR
SUESSIGKEITEN
NACH
KALORIEN
SORTIEREN
.
'
680
11.4.5
TIPPS
FUER
COMPARATOR-UND
COMPARABLE-IMPLEMENTIERUNGEN
.
682
11.4.6
STATISCHE
UND
DEFAULT-METHODEN
IN
COMPARATOR
.
683
11.5
WRAPPER-KLASSEN
UND
AUTOBOXING
.
686
11.5.1
WRAPPER-OBJEKTE
ERZEUGEN
.
688
11.5.2
KONVERTIERUNGEN
IN
EINE
STRING-REPRAESENTATION
.
689
11.5.3
VON
EINER
STRING-REPRAESENTATION
PARSEN
.
691
11.5.4
DIE
BASISKLASSE
NUMBER
FUER
NUMERISCHE
WRAPPER-OBJEKTE
.
691
11.5.5
VERGLEICHE
DURCHFUEHREN
MIT
COMPARE*(.),
COMPARETO(.),
EQUALS(.)
UND
HASHWERTEN
.
693
11.5.6
STATISCHE
REDUZIERUNGSMETHODEN
IN
WRAPPER-KLASSEN
.
696
11.5.7
KONSTANTEN
FUER
DIE
GROESSE
EINES
PRIMITIVEN
TYPS
.
697
11.5.8
BEHANDELN
VON
VORZEICHENLOSEN
ZAHLEN
*
.
697
11.5.9
DIE
KLASSEN
INTEGER
UND
LONG
.
699
11.5.10
DIE
KLASSEN
DOUBLE
UND
FLOAT
FUER
FLIESSKOMMAZAHLEN
.
700
11.5.11
DIE
BOOLEAN-KLASSE
.
700
11.5.12
AUTOBOXING:
BOXING
UND
UNBOXING
.
701
11.6
ITERATOR,
ITERABLE
*
.
706
11.6.1
DIE
SCHNITTSTELLE
ITERATOR
.
706
11.6.2
WER
DEN
ITERATOR
LIEFERT
.
710
11.6.3
DIE
SCHNITTSTELLE
ITERABLE
.
710
11.6.4
ERWEITERTES
FOR
UND
ITERABLE
.
711
11.6.5
INTERNE
ITERATION
.
711
11.6.6
EIN
EIGENES
ITERABLE
IMPLEMENTIEREN
*
.
712
11.7 ANNOTATIONEN
IN
DER
JAVA
SE
.
714
11.7.1
ORTE
FUER
ANNOTATIONEN
.
714
11.7.2
ANNOTATIONSTYPEN
AUS
JAVA.LANG
.
715
11.7.3
@DEPRECATED
.
715
11.7.4
ANNOTATIONEN
MIT
ZUSAETZLICHEN
INFORMATIONEN
.
716
11.7.5
@SUPPRESSWARNINGS
.
716
11.8
ZUM
WEITERLESEN
.
719
12
GENERICS T
721
12.1
EINFUEHRUNG
IN
JAVA
GENERICS
.
721
12.1.1
MENSCH
VERSUS
MASCHINE-TYPPRUEFUNG
DES
COMPILERS
UND
DER
LAUFZEITUMGEBUNG
.
721
12.1.2
RAKETEN
.
722
12.1.3
GENERISCHE
TYPEN
DEKLARIEREN
.
724
12.1.4
GENERICS
NUTZEN
.
726
12.1.5
DIAMONDS
AREFOREVER
.
729
12.1.6
GENERISCHE
SCHNITTSTELLEN
.
732
12.1.7
GENERISCHE
METHODEN/KONSTRUKTOREN
UND
TYP-INFERENZ
.
733
12.2
UMSETZEN
DER
GENERICS,
TYPLOESCHUNG
UND
RAW-TYPES
.
737
12.2.1
REALISIERUNGSMOEGLICHKEITEN
.
737
12.2.2
TYPLOESCHUNG
(TYPE
ERASURE)
.
738
12.23
PROBLEME
DER
TYPLOESCHUNG
.
739
12.2.4
RAW-TYPE
.
743
12.3
DIE
TYPEN
UEBER
BOUNDS
EINSCHRAENKEN
.
745
12.3.1
EINFACHE
EINSCHRAENKUNGEN
MIT
EXTENDS
.
745
12.3.2
WEITERE
OBERTYPEN
MIT
&
.
748
12.4
TYPPARAMETER
IN
DER
THROWS-KLAUSEL
*
.
748
12.4.1
DEKLARATION
EINER
KLASSE
MIT
TYPVARIABLE
E
EXTENDS
EXCEPTION
.
748
12.4.2
PARAMETRISIERTER
TYP
BEI
TYPVARIABLE
E
EXTENDS
EXCEPTION
.
749
12.5
GENERICS
UND
VERERBUNG,
INVARIANZ
.
752
12.5.1
ARRAYS
SIND
KOVARIANT
.
752
12.5.2
GENERICS
SIND
NICHT
KOVARIANT,
SONDERN
INVARIANT
.
752
12.5.3
WILDCARDS
MIT
?
.
753
12.5.4
BOUNDED
WILDCARDS
.
756
12.5.5
BOUNDED-WILDCARD-TYPEN
UND
BOUNDED-TYPVARIABLEN
.
759
12.5.6
DAS
LESS-PRINZIP
.
761
12.5.7
ENUM E
EXTENDS
ENUM E
*
.
764
12.6
KONSEQUENZEN
DER
TYPLOESCHUNG:
TYP-TOKEN,
ARRAYS
UND
BRUECKEN
*
.
766
12.6.1
TYP-TOKEN
.
766
12.6.2
SUPER-TYPE-TOKEN
.
768
12.6.3
GENERICS
UND
ARRAYS
.
769
12.6.4
BRUECKENMETHODEN
*
.
770
12.7
ZUM
WEITERLESEN
.
775
13
LAMBDA-AUSDRUECKE
UND
FUNKTIONALE
PROGRAMMIERUNG
777
13.1
FUNKTIONALE
SCHNITTSTELLEN
UND
LAMBDA-AUSDRUECKE
.
777
13.1.1
KLASSEN
IMPLEMENTIEREN
SCHNITTSTELLEN
.
777
13.1.2
LAMBDA-AUSDRUECKE
IMPLEMENTIEREN
SCHNITTSTELLEN
.
779
13.1.3
FUNKTIONALE
SCHNITTSTELLEN
.
780
13.1.4
DER
TYP
EINES
LAMBDA-AUSDRUCKS
ERGIBT
SICH
DURCH
DEN
ZIELTYP
.
781
13.1.5
ANNOTATION
@FUNCTIONALLNTERFACE
.
786
13.1.6
SYNTAX
FUER
LAMBDA-AUSDRUECKE
.
787
13.1.7
DIE
UMGEBUNG
DER
LAMBDA-AUSDRUECKE
UND
VARIABIENZUGRIFFE
.
792
13.1.8
AUSNAHMEN
IN
LAMBDA-AUSDRUECKEN
.
797
13.1.9
KLASSEN
MIT
EINER
ABSTRAKTEN
METHODE
ALS
FUNKTIONALE
SCHNITTSTELLE?
*
.
801
13.2
METHODENREFERENZ
.
801
13.2.1
MOTIVATION
.
801
13.2.2
METHODENREFERENZEN
MIT
.
802
13.2.3
VARIANTEN
VON
METHODENREFERENZEN
.
803
13.3
KONSTRUKTORREFERENZ
.
805
13.3.1
KONSTRUKTORREFERENZEN
SCHREIBEN
.
806
13.3.2
PARAMETERLOSE
UND
PARAMETRISIERTE
KONSTRUKTOREN
.
807
13.3.3
NUETZLICHE
VORDEFINIERTE
SCHNITTSTELLEN
FUER
KONSTRUKTORREFERENZEN
.
808
13.4
FUNKTIONALE
PROGRAMMIERUNG
.
809
13.4.1
CODE
=
DATEN
.
809
13.4.2
PROGRAMMIERPARADIGMEN:
IMPERATIV
ODER
DEKLARATIV
.
810
13.4.3
DAS
WESEN
DER
FUNKTIONALEN
PROGRAMMIERUNG
.
811
13.4.4
FUNKTIONALE
PROGRAMMIERUNG
UND
FUNKTIONALE
PROGRAMMIERSPRACHEN
.
814
13.4.5
FUNKTIONEN
HOEHERER
ORDNUNG
AM
BEISPIEL
VON
COMPARATOR
.
816
13.4.6
LAMBDA-AUSDRUECKE
ALS
ABBILDUNGEN
BZW.
FUNKTIONEN
BETRACHTEN
.
816
13.5
FUNKTIONALE
SCHNITTSTELLEN
AUS
DEM
JAVA.UTIL.FUNCTION-PAKET
.
818
13.5.1
BLOECKE
MIT
CODE
UND
DIE
FUNKTIONALE
SCHNITTSTELLE
CONSUMER
.
818
13.5.2
SUPPLIER
.
820
13.5.3
PRAEDIKATE
UND
JAVA.UTIL.FUNCTION.PREDICATE
.
821
13.5.4
FUNKTIONEN
UEBER
DIE
FUNKTIONALE
SCHNITTSTELLE
JAVA.UTIL.FUNCTION.FUNCTION
.
823
13.5.5
EIN
BISSCHEN
BI
.
827
13.5.6
FUNKTIONALE
SCHNITTSTELLEN
MIT
PRIMITIVEN
.
830
13.6
OPTIONAL
IST
KEINE
NULLNUMMER
.
832
13.6.1
EINSATZ
VON
NULL
.
833
13.6.2
DER
OPTIONAL-TYP
.
835
13.6.3
ERST
MAL
FUNKTIONAL
MIT
OPTIONAL
.
838
13.6.4
PRIMITIV-OPTIONALES
MIT
SPEZIELLEN
OPTIONAL*-KLASSEN
.
841
13.7
WAS
IST
JETZT
SO
FUNKTIONAL?
.
843
13.8
ZUM
WEITERLESEN
.
845
14
ARCHITEKTUR,
DESIGN
UND
ANGEWANDTE
OBJEKTORIENTIERUNG
847
14.1
SOLIDE
MODELLIERUNG
.
847
14.1.1
DRY,
KISS
UND
YAGNI
.
848
14.1.2
SOLID
.
848
14.1.3
SEI
NICHT
STUPID
.
850
14.2
ARCHITEKTUR,
DESIGN
UND
IMPLEMENTIERUNG
.
851
14.3
DESIGN-PATTERNS
(ENTWURFSMUSTER)
.
852
14.3.1
MOTIVATION
FUER
DESIGN-PATTERNS
.
852
14.3.2
SINGLETON
.
853
14.3.3
FABRIKMETHODEN
.
854
14.3.4
DAS
BEOBACHTER-PATTERN
MIT
LISTENER
REALISIEREN
.
855
14.4
ZUM
WEITERLESEN
.
859
15
JAVA
PLATFORM
MODULE
SYSTEM
861
15.1
KLASSENLADER
(DASS
LOADER)
UND
MODUL-/KLASSENPFAD
.
861
15.1.1
KLASSENLADEN
AUF
ABRUF
.
861
15.1.2
KLASSENLADER
BEI
DER
ARBEIT
ZUSEHEN
.
862
15.1.3
JMOD-DATEIEN
UND
JAR-DATEIEN
.
863
15.1.4
WOHER
DIE
KLASSEN
KOMMEN:
SUCHORTE
UND
SPEZIELLE
KLASSENLADER
. 864
15.1.5
SETZEN
DES
SUCHPFADES
.
865
15.2
MODULE
IM
JPMS
EINBINDEN
.
867
15.2.1
WER
SIEHT
WEN?
.
868
15.2.2
PLATTFORM-MODULE
UND
EIN
JMOD-BEISPIEL
.
869
15.2.3
INTERNE
PLATTFORMEIGENSCHAFTEN
NUTZEN,
--ADD-EXPORTS
.
870
15.2.4
NEUE
MODULE
EINBINDEN
.
872
15.3
EIGENE
MODULE
ENTWICKELN
.
873
15.3.1
MODUL
COM.TUTEGO.CANDYTESTER
.
873
15.3.2
MODULDEKLARATION
MIT
MODULE-INFO.JAVA
UND
EXPORTS
.
874
15.3.3
MODUL
COM.TUTEGO.MAIN
.
875
15.3.4
MODULINFODATEI
MIT
REQUIRES
.
875
15.3.5
MODULEINSETZER
SCHREIBEN,
JVM-SCHALTER
-P
UND
-M
.
876
15.3.6
MODULINFODATEI-EXPERIMENTE
.
877
15.3.7
AUTOMATISCHE
MODULE
.
878
15.3.8
UNBENANNTES
MODUL
.
879
15.3.9
LESBARKEIT
UND
ZUGREIFBARKEIT
.
879
15.3.10
MODUL-MIGRATION
.
880
15.4
ZUM
WEITERLESEN
.
YY
881
16
DIE
KLASSENBIBLIOTHEK
883
16.1
DIE
JAVA-KLASSENPHILOSOPHIE
.
883
16.1.1
MODUL,
PAKET,
TYP
.
883
16.1.2
UEBERSICHT
UEBER
DIE
PAKETE
DER
STANDARDBIBLIOTHEK
.
886
16.2
EINFACHE
ZEITMESSUNG
UND
PROFILING
*
.
890
16.3
DIE
KLASSE
CLASS
.
891
16.3.1
AN
EIN
CLASS-OBJEKT
KOMMEN
.
892
16.3.2
EINE
CLASS
IST
EIN
TYPE
.
894
16.4
DIE
UTILITY-KLASSEN
SYSTEM
UND
PROPERTIES
.
894
16.4.1
SPEICHER
DER
JVM
.
895
16.4.2
ANZAHL
DER
CPUS
BZW.
KERNE
.
896
16.4.3
SYSTEMEIGENSCHAFTEN
DER
JAVA-UMGEBUNG
.
897
16.4.4
EIGENE
PROPERTIES
VON
DER
KONSOLE
AUS
SETZEN
*
.
898
16.4.5
ZEILENUMBRUCHZEICHEN,
LINE.SEPARATOR
.
900
16.4.6
UMGEBUNGSVARIABLEN
DES
BETRIEBSSYSTEMS
.
900
16.5
SPRACHEN
DER
LAENDER
.
902
16.5.1
SPRACHEN
IN
REGIONEN
UEBER
LOCALE-OBJEKTE
.
902
16.6
WICHTIGE
DATUM-KLASSEN
IM
UEBERBLICK
.
906
16.6.1
DER
1.1.1970
.
907
16.6.2
SYSTEM.CURRENTTIMEAAILLISO
.
907
16.6.3
EINFACHE
ZEITUMRECHNUNGEN
DURCH
TIMEUNIT
.
908
16.7
DATE-TIME-API
.
909
16.7.1
MENSCHENZEIT
UND
MASCHINENZEIT
.
910
16.7.2
DIE
DATUMSKLASSE
LOCALDATE
.
913
16.8
LOGGING
MIT
JAVA
.
914
16.8.1
LOGGING-APIS
.
914
16.8.2
LOGGING
MIT
JAVA.UTIL.LOGGING
.
914
16.9
MAVEN:
BUILD-MANAGEMENT
UND
ABHAENGIGKEITEN
AUFLOESEN
.
917
16.9.1
DEPENDENCY
HINZUNEHMEN
.
917
16.9.2
LOKALES
UND
DAS
REMOTE
REPOSITORY
.
918
16.9.3
LEBENSZYLUS,
PHASEN
UND
MAVEN-PLUGINS
.
918
16.10
ZUM
WEITERLESEN
.
919
17
EINFUEHRUNG
IN
DIE
NEBENLAEUFIGE
PROGRAMMIERUNG
921
17.1
NEBENLAEUFIGKEIT
UND
PARALLELITAET
.
921
17.1.1
MULTITASKING,
PROZESSE
UND
THREADS
.
922
17.1.2
WIE
NEBENLAEUFIGE
PROGRAMME
DIE
GESCHWINDIGKEIT
STEIGERN
KOENNEN
.
923
17.1.3
JAVA-THREADS
.
924
17.1.4
WAS
JAVA
FUER
NEBENLAEUFIGKEIT
ALLES
BIETET
.
925
17.2
EXISTIERENDE
THREADS
UND
NEUE
THREADS
ERZEUGEN
.
925
17.2.1
MAIN-THREAD
.
925
17.2.2
WER
BIN
ICH?
.
926
17.2.3
DIE
SCHNITTSTELLE
RUNNABLE
IMPLEMENTIEREN
.
926
17.2.4
THREAD
AUFBAUEN
.
927
17.2.5
THREAD
MIT
RUNNABLE
STARTEN
.
928
17.2.6
RUNNABLE
PARAMETRISIEREN
.
930
17.2.7
DIE
KLASSE
THREAD
ERWEITERN
*
.
931
17.3
THREAD-EIGENSCHAFTEN
UND
ZUSTAENDE
.
931
17.3.1
DER
NAME
EINES
THREADS
.
931
17.3.2
DIE
ZUSTAENDE
EINES
THREADS
*
.
932
17.3.3
SCHLAEFER
GESUCHT
.
932
17.3.4
WANN
THREADS
FERTIG
SIND
.
934
17.3.5
EINEN
THREAD
HOEFLICH
MIT
INTERRUPT
BEENDEN
.
934
17.3.6
UNBEHANDELTE
AUSNAHMEN,
THREAD-ENDE
UND
UNCAUGHTEXCEPTIONHANDLER
.
937
17.3.7
DER
STOP()
VON
AUSSEN
*
.
939
17.3.8
EIN
RENDEZVOUS
MIT
JOIN(.)
*
.
939
17.3.9
ARBEIT
NIEDERLEGEN
UND
WIEDER
AUFNEHMEN
*
.
941
17.3.10
PRIORITAET*
.
941
17.4
DER
AUSFUEHRER
(EXECUTOR)
KOMMT
.
943
17.4.1
DIE
SCHNITTSTELLE
EXECUTOR
.
943
17.4.2
GLUECKLICH
IN
DER
GRUPPE-DIE
THREAD-POOLS
.
945
17.4.3
THREADS
MIT
RUECKGABE
UEBER
CALLABLE
.
947
17.4.4
ERINNERUNGEN
AN
DIE
ZUKUNFT
-
DIE
FUTURE-RUECKGABE
.
949
17.4.5
MEHRERE
CALLABLE-OBJEKTE
ABARBEITEN
.
952
17.4.6
COMPLETIONSERVICE
UND
EXECUTORCOMPLETIONSERVICE
.
953
17.4.7
SCHEDULEDEXECUTORSERVICE:
WIEDERHOLENDE
AUFGABEN
UND
ZEITSTEUERUNGEN
.
955
17.4.8
ASYNCHRONES
PROGRAMMIEREN
MIT
COMPLETABLEFUTURE
(COMPLETIONSTAGE)
.
955
17.5
ZUM
WEITERLESEN
.
958
18
EINFUEHRUNG
IN
DATENSTRUKTUREN
UND
ALGORITHMEN
959
18.1
LISTEN
.
959
18.1.1
ERSTES
LISTEN-BEISPIEL
.
960
18.1.2
AUSWAHLKRITERIUM
ARRAYLIST
ODER
LINKEDLIST
.
961
18.1.3
DIE
SCHNITTSTELLE
LIST
.
961
18.1.4
ARRAYLIST
.
968
18.1.5
LINKEDLIST
.
969
18.1.6
DER
ARRAY-ADAPTER
ARRAYS.ASLIST(.)
.
971
18.1.7
TOARRAY(.)
VON
COLLECTION
VERSTEHEN
-
DIE
GEFAHR
EINER
FALLE
ERKENNEN
.
973
18.1.8
PRIMITIVE
ELEMENTE
IN
DATENSTRUKTUREN
VERWALTEN
.
976
18.2
MENGEN
(SETS)
.
977
18.2.1
EIN
ERSTES
.
977
18.2.2
METHODEN
DER
SCHNITTSTELLE
SET
.
979
18.2.3
HASHSET
.
981
18.2.4
TREESET-DIE
SORTIERTE
MENGE
.
982
18.2.5
DIE
SCHNITTSTELLEN
NAVIGABLESET
UND
SORTEDSET
.
984
18.2.6
LINKEDHASHSET
.
986
18.3
ASSOZIATIVE
SPEICHER
.
987
18.3.1
DIE
KLASSEN
HASHMAP
UND
TREEMAP,
STATISCHE
MAP-METHODEN
.
988
18.3.2
EINFUEGEN
UND
ABFRAGEN
DES
ASSOZIATIVSPEICHERS
.
991
18.4
AUSGEWAEHLTE
BASISTYPEN
.
994
18.5
.
994
18.5.1
DEKLARATIVES
PROGRAMMIEREN
.
994
18.5.2
INTERNE
VERSUS
EXTERNE
ITERATION
.
995
18.5.3
WAS
IST
EIN
STREAM?
.
996
18.6
EINEN
STREAM
ERZEUGEN
.
997
18.6.1
PARALLELE
ODER
SEQUENZIELLE
STREAMS
.
1000
18.7
TERMINALE
OPERATIONEN
.
1001
18.7.1
DIE
ANZAHL
DER
ELEMENTE
.
1001
18.7.2
UND
JETZT
ALLE-FOREACH*(.)
.
1002
18.7.3
EINZELNE
ELEMENTE
AUS
DEM
STROM
HOLEN
.
1002
18.7.4
EXISTENZTESTS
MIT
PRAEDIKATEN
.
1003
18.7.5
EINEN
STROM
AUF
SEIN
KLEINSTES
BZW.
GROESSTES
ELEMENT
REDUZIEREN
.
1004
18.7.6
EINEN
STROM
MIT
EIGENEN
FUNKTIONEN
REDUZIEREN
.
1005
18.7.7
ERGEBNISSE
IN
EINEN
CONTAINER
SCHREIBEN,
TEIL
1:
COLLECT(.)
.
1006
18.7.8
ERGEBNISSE
IN
EINEN
CONTAINER
SCHREIBEN,
TEIL
2:
COLLECTOR
UND
COLLECTORS
.
1007
18.7.9
ERGEBNISSE
IN
EINEN
CONTAINER
SCHREIBEN,
TEIL
3:
GRUPPIERUNGEN
.
1009
18.7.10
STREAM-ELEMENTE
IN
EIN
ARRAY
ODER
EINEN
ITERATOR
UEBERTRAGEN
.
1011
18.8 INTERMEDIAERE
OPERATIONEN
.
1012
18.8.1
ELEMENT-VORSCHAU
.
1013
18.8.2
FILTERN
VON
ELEMENTEN
.
1013
18.8.3
STATUSBEHAFTETE
INTERMEDIAERE
OPERATIONEN
.
1014
18.8.4
PRAEFIX-OPERATION
.
1015
18.8.5
ABBILDUNGEN
.
1016
18.9
ZUM
WEITERLESEN
.
1019
19
EINFUEHRUNG
IN
GRAFISCHE
OBERFLAECHEN
1021
19.1
GUI-FRAMEWORKS
.
1021
19.1.1
KOMMANDOZEILE
.
1021
19.1.2
GRAFISCHE
BENUTZEROBERFLAECHE
.
1021
19.1.3
ABSTRACT
WINDOW
TOOLKIT
(AWT)
.
1022
19.1.4
JAVA
FOUNDATION
CLASSES
UND
SWING
.
1022
19.1.5
JAVAFX
.
1022
19.1.6
SWT
(STANDARD
WIDGET
TOOLKIT)
*
.
1024
19.2
DEKLARATIVE
UND
PROGRAMMIERTE
OBERFLAECHEN
.
1025
19.2.1
GUI-BESCHREIBUNGEN
IN
JAVAFX
.
1025
19.2.2
DEKLARATIVE
GUI-BESCHREIBUNGEN
FUER
SWING?
.
1026
19.3
GUI-BUILDER
.
1026
19.3.1
GUI-BUILDER
FUER
JAVAFX
.
1027
19.3.2
GUI-BUILDER
FUER
SWING
.
1027
19.4
MIT
DEM
ECLIPSE
WINDOWBUILDER
ZUR
ERSTEN
SWING-OBERFLAECHE
.
1027
19.4.1
WINDOWBUILDER
INSTALLIEREN
.
1028
19.4.2
MIT
WINDOWBUILDER
EINE
GUI-KLASSE
HINZUFUEGEN
.
1029
19.4.3
DAS
LAYOUTPROGRAMM
STARTEN
.
1031
19.4.4
GRAFISCHE
OBERFLAECHE
AUFBAUEN
.
1032
19.4.5
SWING-KOMPONENTEN-KLASSEN
.
1035
19.4.6
FUNKTIONALITAET
GEBEN
.
1036
19.5
GRUNDLEGENDES
ZUM
ZEICHNEN
.
1039
19.5.1
DIE
PAINT(GRAPHICS)-METHODE
FUER
DEN
AWT-FRAME
.
1040
19.5.2
DIE
EREIGNISORIENTIERTE
PROGRAMMIERUNG
AENDERT
FENSTERINHALTE
.
1041
19.5.3
ZEICHNEN
VON
INHALTEN
AUF
EINEN
JFRAME
.
1043
19.5.4
AUFFORDERN
ZUM
NEUZEICHNEN
MIT
REPAINT(.)
.
1044
19.5.5
JAVA
2D-API
.
1045
19.6
ZUM
WEITERLESEN
.
1045
20
EINFUEHRUNG
IN
DATEIEN
UND
DATENSTROEME
1047
20.1
ALTE
UND
NEUE
WELT
IN
JAVA.IO
UND
JAVA.NIO
.
1047
20.1.1
JAVA.IO-PAKET
MIT
FILE-KLASSE
.
1047
20.1.2
NIO.2
UND
DAS
JAVA.NIO-PAKET
.
1048
20.1.3
JAVA.IO.FILE
ODER
JAVA.NIO.*-TYPEN?
.
1048
20.2
DATEISYSTEME
UND
PFADE
.
1048
20.2.1
FILESYSTEM
UND
PATH
.
1049
20.2.2
DIE
UTILITY-KLASSE
FILES
.
1056
20.3
DATEIEN
MIT
WAHLFREIEM
ZUGRIFF
.
1058
20.3.1
EIN
RANDOMACCESSFILE
ZUM
LESEN
UND
SCHREIBEN
OEFFNEN
.
1059
20.3.2
AUS
DEM
RANDOMACCESSFILE
LESEN
.
1059
20.3.3
SCHREIBEN
MIT
RANDOMACCESSFILE
.
1062
20.3.4
DIE
LAENGE
DES
RANDOMACCESSFILE
.
1062
20.3.5
HIN
UND
HER
IN
DER
DATEI
.
1063
20.4
BASISKLASSEN
FUER
DIE
EIN-/AUSGABE
.
1064
20.4.1
DIE
VIER
ABSTRAKTEN
BASISKLASSEN
.
1064
20.4.2
DIE
ABSTRAKTE
BASISKLASSE
OUTPUTSTREAM
.
1065
20.4.3
DIE
ABSTRAKTE
BASISKLASSE
INPUTSTREAM
.
1067
20.4.4
DIE
ABSTRAKTE
BASISKLASSE
WRITER
.
1069
20.4.5
DIE
SCHNITTSTELLE
APPENDABLE
*
.
1070
20.4.6
DIE
ABSTRAKTE
BASISKLASSE
READER
.
1071
20.4.7
DIE
SCHNITTSTELLEN
CLOSEABLE,
AUTOCLOSEABLE
UND
FLUSHABLE
.
1074
20.5
LESEN
AUS
DATEIEN
UND
SCHREIBEN
IN
DATEIEN
.
1076
20.5.1
BYTEORIENTIERTE
DATENSTROEME
UEBER
FILES
BEZIEHEN
.
1076
20.5.2
ZEICHENORIENTIERTE
DATENSTROEME
UEBER
FILES
BEZIEHEN
.
1077
20.5.3
DIE
FUNKTION
VON
OPENOPTION
BEI
DEN
FILES.NEW*(.)-METHODEN
.
1079
20.5.4
RESSOURCEN
AUS
DEM
MODULPFAD
UND
AUS
JAR-DATEIEN
LADEN
.
1081
20.6
ZUM
WEITERLESEN
.
1082
21
EINFUEHRUNG
INS
DATENBANKMANAGEMENT
MIT
JDBC
1083
21.1
RELATIONALE
DATENBANKEN
UND
JAVA-ZUGRIFFE
.
1083
21.1.1
DAS
RELATIONALE
MODELL
.
1083
21.1.2
JAVA-APIS
ZUM
ZUGRIFF
AUF
RELATIONALE
DATENBANKEN
.
1084
21.1.3
DIEJDBC-API
UND
IMPLEMENTIERUNGEN:
JDBC-TREIBER
.
1085
21.1.4
H2
IST
DAS
WERKZEUG
AUF
DER
INSEL
.
1085
21.2
EINE
BEISPIELABFRAGE
.
1086
21.2.1
SCHRITTE
ZUR
DATENBANKABFRAGE
.
1086
21.2.2
MIT
JAVA
AUF
DIE
RELATIONALE
DATENBANK
ZUGREIFEN
.
1086
21.3
ZUM
WEITERLESEN
.
1088
22
BITS
UND
BYTES,
MATHEMATISCHES
UND
GELD
1089
22.1
BITS
UND
BYTES
.
1089
22.1.1
DIE
BIT-OPERATOREN
KOMPLEMENT,
UND,
ODER
UND
XOR
.
1090
22.1.2
REPRAESENTATION
GANZER
ZAHLEN
IN
JAVA-DAS
ZWEIERKOMPLEMENT
.
1091
22.1.3
DAS
BINAERE
(BASIS
2),
OKTALE
(BASIS
8),
HEXADEZIMALE
(BASIS
16)
STELLENWERTSYSTEM
.
1093
22.1.4
AUSWIRKUNG
DER
TYPUMWANDLUNG
AUF
DIE
BIT-MUSTER
.
1094
22.1.5
VORZEICHENLOSARBEITEN
.
1097
22.1.6
DIE
VERSCHIEBEOPERATOREN
.
1099
22.1.7
EIN
BIT
SETZEN,
LOESCHEN,
UMDREHEN
UND
TESTEN
.
1102
22.1.8
BIT-METHODEN
DER
INTEGER
UND
LONG-KLASSE
.
1102
22.2
FLIESSKOMMA-ARITHMETIK
IN
JAVA
.
1104
22.2.1
SPEZIALWERTE
FUER
UNENDLICH,
NULL,
NAN
.
1105
22.2.2
STANDARDNOTATION
UND
WISSENSCHAFTLICHE
NOTATION
BEI
FLIESSKOMMAZAHLEN*
.
1108
22.2.3
MANTISSE
UND
EXPONENT
*
.
1108
22.3
DIE
EIGENSCHAFTEN
DER
KLASSE
MATH
.
1110
22.3.1
OBJEKTVARIABLEN
DER
KLASSE
MATH
.
1110
22.3.2
ABSOLUTWERTE
UND
VORZEICHEN
.
1111
22.3.3
MAXIMUM/MINIMUM
.
1111
22.3.4
RUNDEN
VON
WERTEN
.
1112
22.3.5
REST
DER
GANZZAHLIGEN
DIVISION
*
.
1115
22.3.6
DIVISION
MIT
RUNDUNG
IN
RICHTUNG
NEGATIV
UNENDLICH,
ALTERNATIVER
RESTWERT
*
.
1116
22.3.7
MULTIPLY-ACCUMULATE
.
1117
22.3.8
WURZEL-UND
EXPONENTIALMETHODEN
.
1118
22.3.9
DER
LOGARITHMUS
*
.
1119
22.3.10
WINKELMETHODEN
*
.
1120
22.3.11
ZUFALLSZAHLEN
.
1121
22.4
GENAUIGKEIT,
WERTEBEREICH
EINES
TYPS
UND
UEBERLAUFKONTROLLE
*
.
1121
22.4.1
DER
GROESSTE
UND
DER
KLEINSTE
WERT
.
1122
22.4.2
UEBERLAUF
UND
ALLES
GANZ
EXAKT
.
1122
22.4.3
WAS
BITTE
MACHT
EINE
ULP?
.
1125
22.5
ZUFALLSZAHLEN:
RANDOM,
THREADLOCALRANDOM
UND
SECURERANDOM.
1127
22.5.1
DIE
KLASSE
RANDOM
.
1127
22.5.2
DIE
KLASSE
THREADLOCALRANDOM
.
1130
22.5.3
DIE
KLASSE
SECURERANDOM
*
.
1131
22.6
GROSSE
ZAHLEN*
.
1131
22.6.1
DIE
KLASSE
BIGINTEGER
.
1131
22.6.2
BEISPIEL:
GANZ
LANGE
FAKULTAETEN
MIT
BIGINTEGER
.
1138
22.6.3
GROSSE
FLIESSKOMMAZAHLEN
MIT
BIGDECIMAL
.
1139
22.6.4
MIT
MATHCONTEXT
KOMFORTABEL
DIE
RECHENGENAUIGKEIT
SETZEN
.
1142
22.6.5
NOCH
SCHNELLER
RECHNEN
DURCH
MUTABLE
IMPLEMENTIERUNGEN
.
1144
22.7
GELD
UND
WAEHRUNG
.
1144
22.7.1
GELDBETRAEGE
REPRAESENTIEREN
.
1144
22.7.2
ISO
4217
.
1145
22.7.3
WAEHRUNGEN
IN
JAVA
REPRAESENTIEREN
.
1145
22.8
ZUM
WEITERLESEN
.
1146
23
TESTEN
MIT
JUNIT
1147
23.1
SOFTWARETESTS
.
1147
23.1.1
VORGEHEN
BEIM
SCHREIBEN
VON
TESTFAELLEN
.
1148
23.2
DAS
TEST-FRAMEWORK
JUNIT
.
1148
23.2.1
TEST-DRIVEN
DEVELOPMENT
UND
TEST-FIRST
.
1149
23.2.2
TESTEN,
IMPLEMENTIEREN,
TESTEN,
IMPLEMENTIEREN,
TESTEN,
FREUEN
.
1150
23.2.3
JUNIT-TESTS
AUSFUEHREN
.
1152
23.2.4
ASSERT*(.)-METHODEN
DER
KLASSE
ASSERTIONS
.
1153
23.2.5
EXCEPTIONS
TESTEN
.
1156
23.2.6
GRENZEN
FUER
AUSFUEHRUNGSZEITEN
FESTLEGEN
.
1157
23.2.7
BESCHRIFTUNGEN
MIT
@DISPLAYNAME
.
1158
23.2.8
VERSCHACHTELTE
TESTS
.
1158
23.2.9
TESTS
IGNORIEREN
.
1159
23.2.10
MIT
METHODEN
DER
ASSUMPTIONS-KLASSE
TESTS
ABBRECHEN
.
1159
23.2.11
PARAMETRISIERTE
TESTS
.
1159
23.3
JAVA-ASSERTIONS-BIBLIOTHEKEN
UND
ASSERTL
.
1161
23.3.1
ASSERTL
.
1161
23.4
AUFBAU
GROESSERER
TESTFAELLE
.
1163
23.4.1
FIXTURES
.
1163
23.4.2
SAMMLUNGEN
VON
TESTKLASSEN
UND
KLASSENORGANISATION
.
1165
23.5
WIE
GUTES
DESIGN
DAS
TESTEN
ERMOEGLICHT
.
1165
23.6
DUMMY,
FAKE,
STUB
UND
MOCK
.
1167
23.7
JUNIT-ERWEITERUNGEN,
TESTZUSAETZE
.
1169
23.8
ZUM
WEITERLESEN
.
1170
24
DIE
WERKZEUGE
DES
JDK
1171
24.1
UEBERSICHT
.
1171
24.1.1
AUFBAU
UND
GEMEINSAME
SCHALTER
.
1172
24.2
JAVA-QUELLEN
UEBERSETZEN
.
1172
24.2.1
DER
JAVA-COMPILER
DES
JDK
.
1172
24.2.2
NATIVE
COMPILER
.
1173
24.3
DIE
JAVA-LAUFZEITUMGEBUNG
.
1173
24.3.1
SCHALTER
DER
JVM
.
1173
24.3.2
DER
UNTERSCHIED
ZWISCHENJAVA.EXE
UND
JAVAW.EXE
.
1176
24.4
DOKUMENTATIONSKOMMENTARE
MIT
JAVADOC
.
1176
24.4.1
EINEN
DOKUMENTATIONSKOMMENTAR
SETZEN
.
1176
24.4.2
MIT
DEM
WERKZEUG
JAVADOC
EINE
DOKUMENTATION
ERSTELLEN
.
1179
24.4.3
HTML-TAGS
IN
DOKUMENTATIONSKOMMENTAREN
*
.
1179
24.4.4
GENERIERTE
DATEIEN
.
1179
24.4.5
DOKUMENTATIONSKOMMENTARE
IM
UEBERBLICK
*
.
1180
24.4.6
JAVADOC
UND
DOCLETS
*
.
1182
24.4.7
VERALTETE
(DEPRECATED)
TYPEN
UND
EIGENSCHAFTEN
.
1182
24.4.8
JAVADOC-UEBERPRUEFUNG
MIT
DOCLINT
.
1185
24.5
DAS
ARCHIVFORMAT
JAR
.
1186
24.5.1
DAS
DIENSTPROGRAMM
JAR
BENUTZEN
.
1186
24.5.2
DAS
MANIFEST
.
1186
24.5.3
APPLIKATIONEN
IN
JAR-ARCHIVEN
STARTEN;
AUSFUEHRBARE
JAR-DATEIEN
.
1187
24.6
ZUM
WEITERLESEN
.
1188
ANHANG
1189
A
JAVA
SE-MODULE
UND
PAKETUEBERSICHT
.
1189
INDEX
.
1207 |
adam_txt |
AUF
EINEN
BLICK
1
JAVA
IST
AUCH
EINE
SPRACHE
.
49
2
IMPERATIVE
SPRACHKONZEPTE
.
91
3
KLASSEN
UND
OBJEKTE
.
213
4
ARRAYS
UND
IHRE
ANWENDUNGEN
.
255
5
DER
UMGANG
MIT
ZEICHEN
UND
ZEICHENKETTEN
.
299
6
EIGENE
KLASSEN
SCHREIBEN
.
383
7
OBJEKTORIENTIERTE
BEZIEHUNGSFRAGEN
.
445
8
RECORDS,
SCHNITTSTELLEN,
AUFZAEHLUNGEN,
VERSIEGELTE
KLASSEN
.
507
9
AUSNAHMEN
MUESSEN
SEIN
.
569
10
GESCHACHTELTE
TYPEN
.
631
11 BESONDERE
TYPEN
DER
JAVA
SE
.
649
12
GENERICS T
.
721
13
LAMBDA-AUSDRUECKE
UND
FUNKTIONALE
PROGRAMMIERUNG
.
777
14
ARCHITEKTUR,
DESIGN
UND
ANGEWANDTE
OBJEKTORIENTIERUNG
.
847
15
JAVA
PLATFORM
MODULE
SYSTEM
.
861
16
DIE
KLASSENBIBLIOTHEK
.
883
17
EINFUEHRUNG
IN
DIE
NEBENLAEUFIGE
PROGRAMMIERUNG
.
921
18
EINFUEHRUNG
IN
DATENSTRUKTUREN
UND
ALGORITHMEN
.
959
19
EINFUEHRUNG
IN
GRAFISCHE
OBERFLAECHEN
.
1021
20
EINFUEHRUNG
IN
DATEIEN
UND
DATENSTROEME
.
1047
21
EINFUEHRUNG
INS
DATENBANKMANAGEMENT
MIT
JDBC
.
1083
22
BITS
UND
BYTES,
MATHEMATISCHES
UND
GELD
.
1089
23
TESTEN
MIT
JUNIT
.
1147
24
DIE
WERKZEUGE
DES
JDK
.
1171
INHALT
MATERIALIEN
ZUM
BUCH
.
31
VORWORT
.
33
1
JAVA
IST
AUCH
EINE
SPRACHE
49
1.1
HISTORISCHER
HINTERGRUND
.
50
1.2
WARUM
JAVA
POPULAER
IST
-
DIE
ZENTRALEN
EIGENSCHAFTEN.
52
1.2.1
BYTECODE
.
52
1.2.2
AUSFUEHRUNG
DES
BYTECODES
DURCH
EINE
VIRTUELLE
MASCHINE
.
52
1.2.3
PLATTFORMUNABHAENGIGKEIT
.
53
1.2.4
JAVA
ALS
SPRACHE,
LAUFZEITUMGEBUNG
UND
STANDARDBIBLIOTHEK
.
53
1.2.5
OBJEKTORIENTIERUNG
IN
JAVA
.
54
1.2.6
JAVA
IST
VERBREITET
UND
BEKANNT
.
54
1.2.7
JAVA
IST
SCHNELL-OPTIMIERUNG
UND
JUST-IN-TIME-COMPILATION
.
55
1.2.8
ZEIGER
UND
REFERENZEN
.
57
1.2.9
BRING
DEN
MUELL
RAUS,
GARBAGE-COLLECTOR!
.
58
1.2.10
AUSNAHMEBEHANDLUNG
.
58
1.2.11
DAS
ANGEBOT
AN
BIBLIOTHEKEN
UND
WERKZEUGEN
.
59
1.2.12
VERGLEICHBAR
EINFACHE
SYNTAX
.
60
1.2.13
VERZICHT
AUF
UMSTRITTENE
KONZEPTE
.
61
1.2.14
JAVA
IST
OPEN
SOURCE
.
62
1.2.15
WOFUER
SICH
JAVA
WENIGER
EIGNET
.
62
1.3
JAVA
IM
VERGLEICH
ZU
ANDEREN
SPRACHEN
*
.
63
1.3.1
JAVA
UND
C(++)
.
64
1.3.2
JAVA
UND
JAVASCRIPT
.
64
1.3.3
EIN
WORT
ZU
MICROSOFT,
JAVA
UND
ZU
J++
.
65
1.3.4
JAVA
UND
C#/.NET
.
66
1.4
WEITERENTWICKLUNG
UND
VERLUSTE
.
66
1.4.1
DIE
ENTWICKLUNG
VON
JAVA
UND
SEINE
ZUKUNFTSAUSSICHTEN
.
67
1.4.2
FEATURES,
ENHANCEMENTS
(ERWEITERUNGEN)
UND
EIN
JSR
.
68
1.4.3
APPLETS
.
68
1.4.4
JAVAFX
.
69
1.5
JAVA-PLATTFORMEN:
JAVA
SE,
JAKARTA
EE,
JAVA
ME,
JAVA
CARD
.
70
1.5.1
DIE
JAVA
SE-PLATTFORM
.
70
1.5.2
JAVA
ME:
JAVA
FUER
DIE
KLEINEN
.
72
1.5.3
JAVA
FUER
DIE
GANZ,
GANZ
KLEINEN
.
73
1.5.4
JAVA
FUER
DIE
GROSSEN:
JAKARTA
EE
(EHEMALS
JAVA
EE).
73
1.6
JAVA
SE-IMPLEMENTIERUNGEN
.
74
1.6.1
OPENJDK
.
74
1.6.2
ORACLE
JDK
.
75
1.7
JDK
INSTALLIEREN
.
77
1.7.1
ORACLE
JDK
UNTER
WINDOWS
INSTALLIEREN
.
77
1.8
DAS
ERSTE
PROGRAMM
COMPILIEREN
UND
TESTEN
.
79
1.8.1
99
FLASCHEN
BIER
AN
DER
WAND:
DER
COUNTDOWN
GEHT
WEITER!
.
79
1.8.2
DER
COMPILERLAUF
.
80
1.8.3
DIE
LAUFZEITUMGEBUNG
.
81
1.8.4
HAEUFIGE
COMPILER-UND
INTERPRETER-PROBLEME
.
82
1.9
ENTWICKLUNGSUMGEBUNGEN.
83
1.9.1
INTELLIJ
IDEA
.
83
1.9.2
ECLIPSELDE
.
87
1.9.3
NETBEANS
.
89
1.10
ZUM
WEITERLESEN
.
89
2
IMPERATIVE
SPRACHKONZEPTE
91
2.1
ELEMENTE
DER
PROGRAMMIERSPRACHE
JAVA
.
91
2.1.1
TOKEN
.
92
2.1.2
TEXTKODIERUNGDURCHUNICODE-ZEICHEN
.
93
2.1.3
BEZEICHNER
.
93
2.1.4
LITERALE
.
95
2.1.5
(RESERVIERTE)
SCHLUESSELWOERTER
.
95
2.1.6
ZUSAMMENFASSUNG
DER
LEXIKALISCHEN
ANALYSE
.
97
2.1.7
KOMMENTARE
.
98
2.2
VON
DER
KLASSE
ZUR
ANWEISUNG
.
99
2.2.1
WAS
SIND
ANWEISUNGEN?
.
100
2.2.2
KLASSENDEKLARATION
.
100
2.2.3
DIE
REISE
BEGINNT
AM
MAIN(STRING[])
.
101
2.2.4
DER
ERSTE
METHODENAUFRUF:
PRINTLN
(.)
.
102
2.2.5
ATOMARE
ANWEISUNGEN
UND
ANWEISUNGSSEQUENZEN
.
103
2.2.6
MEHR
ZU
PRINT(.),
PRINTLN
(.)
UND
PRINTF(.)
FUER
BILDSCHIRMAUSGABEN
.
104
2.2.7
DIE
API-DOKUMENTATION
.
106
2.2.8
AUSDRUECKE
.
107
2.2.9
AUSDRUCKSANWEISUNG
.
107
2.2.10
ERSTER
EINBLICK
IN
DIE
OBJEKTORIENTIERUNG
.
108
2.2.11
MODIFIZIERER
.
109
2.2.12
GRUPPIEREN
VON
ANWEISUNGEN
MIT
BLOECKEN
.
109
2.3
DATENTYPEN,
TYPISIERUNG,
VARIABLEN
UND
ZUWEISUNGEN
.
111
2.3.1
PRIMITIVE
DATENTYPEN
IM
UEBERBLICK
.
112
2.3.2
VARIABLENDEKLARATIONEN
.
115
2.3.3
AUTOMATISCHES
FESTSTELLEN
DER
TYPEN
MIT
VAR
.
117
2.3.4
FINALE
VARIABLEN
UND
DER
MODIFIZIERER
FINAL
.
118
2.3.5
KONSOLENEINGABEN
.
119
2.3.6
WAHRHEITSWERTE
.
121
2.3.7
GANZZAHLIGE
DATENTYPEN
.
121
2.3.8
UNTERSTRICHE
IN
ZAHLEN
.
123
2.3.9
ALPHANUMERISCHE
ZEICHEN
.
124
2.3.10
FLIESSKOMMAZAHLEN
MIT
DEN
DATENTYPEN
FLOAT
UND
DOUBLE
.
124
2.3.11
GUTE
NAMEN,
SCHLECHTE
NAMEN
.
126
2.3.12
KEINE
AUTOMATISCHE
INITIALISIERUNG
VON
LOKALEN
VARIABLEN
.
127
2.4
AUSDRUECKE,
OPERANDEN
UND
OPERATOREN
.
127
2.4.1
ZUWEISUNGSOPERATOR
.
128
2.4.2
ARITHMETISCHE
OPERATOREN
.
130
2.4.3
UNAERES
MINUS
UND
PLUS
.
133
2.4.4
PRAEFIX-ODER
POSTFIX-INKREMENT
UND-DEKREMENT
.
133
2.4.5
ZUWEISUNG
MIT
OPERATION
(VERBUNDOPERATOR)
.
135
2.4.6
DIE
RELATIONALEN
OPERATOREN
UND
DIE
GLEICHHEITSOPERATOREN
.
137
2.4.7
LOGISCHE
OPERATOREN:
NICHT,
UND,
ODER,
XOR
.
139
2.4.8
KURZSCHLUSS-OPERATOREN
.
140
2.4.9
DER
RANG
DER
OPERATOREN
IN
DER
AUSWERTUNGSREIHENFOLGE
.
141
2.4.10
DIE
TYPUMWANDLUNG
(DAS
CASTING)
.
144
2.4.11
UEBERLADENES
PLUS
FUER
STRINGS
.
150
2.4.12
OPERATOR
VERMISST
*
.
151
2.5
BEDINGTE
ANWEISUNGEN
ODER
FALLUNTERSCHEIDUNGEN
.
151
2.5.1
VERZWEIGUNG
MIT
DER
IF-ANWEISUNG
.
152
2.5.2
DIE
ALTERNATIVE
MIT
EINER
IF-ELSE-ANWEISUNG
WAEHLEN
.
154
2.5.3
DER
BEDINGUNGSOPERATOR
.
158
2.5.4
DIE
SWITCH-ANWEISUNG
BIETET
DIE
ALTERNATIVE
.
161
2.5.5
SWITCH-AUSDRUECKE
.
168
2.6
IMMER
DAS
GLEICHE
MIT
DEN
SCHLEIFEN
.
170
2.6.1
DIE
WHILE-SCHLEIFE
.
171
2.6.2
DIE
DO-WHILE-SCHLEIFE
.
173
2.6.3
DIEFOR-SCHLEIFE
.
175
2.6.4
SCHLEIFENBEDINGUNGEN
UND
VERGLEICHE
MIT
==
*
.
179
2.6.5
SCHLEIFENABBRUCH
MIT
BREAK
UND
ZURUECK
ZUM
TEST
MIT
CONTINUE
.
181
2.6.6
BREAK
UND
CONTINUE
MIT
MARKEN
*
.
184
2.7
METHODEN
EINER
KLASSE
.
188
2.7.1
BESTANDTEILE
EINER
METHODE
.
188
2.7.2
SIGNATUR-BESCHREIBUNG
IN
DER
JAVA-API
.
190
2.7.3
AUFRUF
EINER
METHODE
.
191
2.7.4
METHODEN
OHNE
PARAMETER
DEKLARIEREN
.
192
2.7.5
STATISCHE
METHODEN
(KLASSENMETHODEN)
.
193
2.7.6
PARAMETER,
ARGUMENT
UND
WERTUEBERGABE
.
194
2.7.7
METHODEN
VORZEITIG
MIT
RETURN
BEENDEN
.
196
2.7.8
METHODEN
MIT
RUECKGABEN
.
197
2.7.9
METHODEN
UEBERLADEN
.
202
2.7.10
GUELTIGKEITSBEREICH
.
204
2.7.11
VORGEGEBENER
WERT
FUER
NICHT
AUFGEFUEHRTE
ARGUMENTE
*
.
206
2.7.12
REKURSIVE
METHODEN
*
.
206
2.7.13
DIE
TUERME
VON
HANOI
*
.
210
2.8
ZUM
WEITERLESEN
.
212
3
KLASSEN
UND
OBJEKTE
213
3.1
OBJEKTORIENTIERTE
PROGRAMMIERUNG
(OOP)
.
213
3.1.1
WARUM
UEBERHAUPT
OOP?
.
214
3.1.2
DENK
ICH
AN
JAVA,
DENK
ICH
AN
WIEDERVERWENDBARKEIT
.
214
3.2
EIGENSCHAFTEN
EINER
KLASSE
.
215
3.2.1
KLASSENARBEIT
MIT
POINT
.
216
3.3
NATUERLICH
MODELLIEREN
MIT
DER
UML
(UNIFIED
MODELING
LANGUAGE)
*
.
217
3.3.1
WICHTIGE
DIAGRAMMTYPEN
DER
UML
*
.
217
3.4
NEUE
OBJEKTE
ERZEUGEN
.
219
3.4.1
EIN
EXEMPLAR
EINER
KLASSE
MIT
DEM
SCHLUESSELWORT
NEW
ANLEGEN
.
219
3.4.2
DEKLARIEREN
VON
REFERENZVARIABLEN
.
219
3.4.3
JETZT
MACH
MAL
'
NEN
PUNKT:
ZUGRIFF
AUF
OBJEKTVARIABLEN
UND
-METHODEN
.
220
3.4.4
DER
ZUSAMMENHANG
VON
NEW,
HEAP
UND
GARBAGE-COLLECTOR
.
225
3.4.5
UEBERBLICK
UEBER
POINT-METHODEN
.
226
3.4.6
KONSTRUKTOREN
NUTZEN
.
230
3.5
ZZZZZNAKE
.
231
3.6
PAKETE
SCHNUEREN,
IMPORTE
UND
COMPILATIONSEINHEITEN
.
233
3.6.1
JAVA-PAKETE
.
234
3.6.2
PAKETE
DER
STANDARDBIBLIOTHEK
.
234
3.6.3
VOLLE
QUALIFIZIERUNG
UND
IMPORT-DEKLARATION
.
234
3.6.4
MIT
IMPORT
PL.P2.*
ALLE
TYPEN
EINES
PAKETS
ERREICHEN
.
236
3.6.5
HIERARCHISCHE
STRUKTUREN
UEBER
PAKETE
UND
DIE
SPIEGELUNG
IM
DATEISYSTEM
.
237
3.6.6
DIE
PACKAGE-DEKLARATION
.
237
3.6.7
UNBENANNTES
PAKET
(DEFAULT
PACKAGE)
.
239
3.6.8
COMPILATIONSEINHEIT
(COMPILATION
UNIT)
.
239
3.6.9
STATISCHER
IMPORT*
.
240
3.7
MIT
REFERENZEN
ARBEITEN,
VIELFALT,
IDENTITAET,
GLEICHWERTIGKEIT
.
241
3.7.1
NULL-REFERENZ
UND
DIE
FRAGE
DER
PHILOSOPHIE
.
241
3.7.2
ALLES
AUF
NULL?
REFERENZEN
TESTEN
.
243
3.7.3
ZUWEISUNGEN
BEI
REFERENZEN
.
244
3.7.4
METHODEN
MIT
REFERENZTYPEN
ALS
PARAMETER
.
246
3.7.5
IDENTITAET
VON
OBJEKTEN
.
250
3.7.6
GLEICHWERTIGKEIT
UND
DIE
METHODE
.
251
3.8
ZUM
WEITERLESEN
.
253
4
ARRAYS
UND
IHRE
ANWENDUNGEN
255
4.1
EINFACHE
FELDARBEIT
.
255
4.1.1
GRUNDBESTANDTEILE
.
256
4.1.2
DEKLARATION
VON
ARRAY-VARIABLEN
.
257
4.1.3
ARRAY-OBJEKTE
MIT
NEW
ERZEUGEN
.
258
4.1.4
ARRAYS
MIT
{
INHALT
}
.
259
4.1.5
DIE
LAENGE
EINES
ARRAYS
UEBER
DIE
OBJEKTVARIABLE
LENGTH
AUSLESEN
.
260
4.1.6
ZUGRIFF
AUF
DIE
ELEMENTE
UEBER
DEN
INDEX
.
260
4.1.7
TYPISCHE
ARRAY-FEHLER
.
262
4.1.8
ARRAYS
AN
METHODEN
UEBERGEBEN
.
264
4.1.9
MEHRERE
RUECKGABEWERTE
*
.
264
4.1.10
VORINITIALISIERTE
ARRAYS
.
265
4.2
DIE
ERWEITERTE
FOR-SCHLEIFE
.
267
4.3
METHODE
MIT
VARIABLER
ARGUMENTANZAHL
(VARARGS)
.
271
4.3.1
SYSTEM.OUT.PRINTF(.)
NIMMT
EINE
BELIEBIGE
ANZAHL
VON
ARGUMENTEN
AN
.
271
4.3.2
DURCHSCHNITT
FINDEN
VON
VARIABLEN
ARGUMENTEN
.
272
4.3.3
VARARGS-DESIGNTIPPS
*
.
273
4.4
MEHRDIMENSIONALE
ARRAYS
*
.
273
4.4.1
NICHTRECHTECKIGE
ARRAYS
*
.
276
4.5
BIBLIOTHEKSUNTERSTUETZUNG
VON
ARRAYS
.
279
4.5.1
KLONEN
KANN
SICH
LOHNEN-ARRAYS
VERMEHREN
.
279
4.5.2
WARUM
KOENNEN
ARRAYS
SO
WENIG?
.
280
4.53
ARRAY-INHALTE
KOPIEREN
.
280
4.6
DIE
KLASSE
ARRAYS
ZUM
VERGLEICHEN,
FUELLEN,
SUCHEN
UND
SORTIEREN
NUTZEN
.
282
4.6.1
EINE
LANGE
SCHLANGE
.
292
4.7
DER
EINSTIEGSPUNKT
FUER
DAS
LAUFZEITSYSTEM:
MAIN(.)
.
295
4.7.1
KORREKTE
DEKLARATION
DER
STARTMETHODE
.
295
4.7.2
KOMMANDOZEILENARGUMENTEVERARBEITEN
.
296
4.73
DER
RUECKGABETYP
VON
MAIN(.)
UND
SYSTEM.EXIT(INT)
*
.
297
4.8
ZUM
WEITERLESEN
.
298
5
DER
UMGANG
MIT
ZEICHEN
UND
ZEICHENKETTEN
299
5.1
VON
ASCII
UEBER
ISO-8859-1
ZU
UNICODE
.
299
5.1.1
ASCII
.
299
5.1.2
ISO/IEC
8859-1
.
300
5.13
UNICODE
.
301
5.1.4
UNICODE-ZEICHENKODIERUNG
.
303
5.1.5
ESCAPE-SEQUENZEN/FLUCHTSYMBOLE
.
304
5.1.6
SCHREIBWEISE
FUER
UNICODE-ZEICHEN
UND
UNICODE-ESCAPES
.
305
5.1.7
JAVA-VERSIONEN
GEHEN
MIT
DEM
UNICODE-STANDARD
HAND
IN
HAND
*
.
306
5.2
DATENTYPEN
FUER
ZEICHEN
UND
ZEICHENFOLGEN
.
307
5.3
DIE
CHARACTER-KLASSE
.
308
5.3.1
IST
DAS
SO?
.
308
5.3.2
ZEICHEN
IN
GROSSBUCHSTABEN/KLEINBUCHSTABEN
KONVERTIEREN
.
311
5.3.3
VOM
ZEICHEN
ZUM
STRING
.
312
5.3.4
VON
CHAR
IN
INT:
VOM
ZEICHEN
ZUR
ZAHL
*
.
312
5.4
ZEICHENFOLGEN
.
313
5.5
DIE
KLASSE
STRING
UND
IHRE
METHODEN
.
315
5.5.1
STRING-LITERALE
ALS
STRING-OBJEKTE
FUER
KONSTANTE
ZEICHENKETTEN
.
316
5.5.2
KONKATENATION
MIT+
.
316
5.5.3
MEHRZEILIGE
TEXTBLOECKE
MIT
.
.
317
5.5.4
STRING-LAENGE
UND
TEST
AUF
LEER-STRING
.
322
5.5.5
ZUGRIFF
AUF
EIN
BESTIMMTES
ZEICHEN
MIT
CHARAT(INT)
.
323
5.5.6
NACH
ENTHALTENEN
ZEICHEN
UND
ZEICHENFOLGEN
SUCHEN
.
324
5.5.7
DAS
HANGMAN-SPIEL
.
327
5.5.8
GUT,
DASS
WIR
VERGLICHEN
HABEN
.
329
5.5.9
STRING-TEILE
EXTRAHIEREN
.
334
5.5.10
STRINGS
ANHAENGEN,
ZUSAMMENFUEGEN,
GROSS-/KLEINSCHREIBUNG
UND
WEISSRAUM
.
338
5.5.11
GESUCHT,
GEFUNDEN,
ERSETZT
.
342
5.5.12
STRING-OBJEKTE
MIT
KONSTRUKTOREN
UND
AUS
WIEDERHOLUNGEN
ERZEUGEN
*
.
344
5.6
VERAENDERBARE
ZEICHENKETTEN
MIT
STRINGBUILDER
UND
.
348
5.6.1
ANLEGEN
VON
STRINGBUILDER-OBJEKTEN
.
348
5.6.2
STRINGBUILDER
IN
ANDERE
ZEICHENKETTENFORMATE
KONVERTIEREN
.
349
5.6.3
ZEICHEN(FOLGEN)
ERFRAGEN
.
349
5.6.4
DATEN
ANHAENGEN
.
350
5.6.5
ZEICHEN(FOLGEN)
SETZEN,
LOESCHEN
UND
UMDREHEN
.
351
5.6.6
LAENGE
UND
KAPAZITAET
EINES
STRINGBUILDER-OBJEKTS
*
.
353
5.6.7
VERGLEICH
VON
STRINGBUILDER-EXEMPLAREN
UND
STRINGS
MIT
STRINGBUILDER
.
355
5.6.8
HASHCODE()
BEI
STRINGBUILDER
*
.
356
5.7
CHARSEQUENCE
ALS
BASISTYP
.
357
5.8
KONVERTIEREN
ZWISCHEN
PRIMITIVEN
UND
STRINGS
.
360
5.8.1
UNTERSCHIEDLICHE
TYPEN
IN
STRING-REPRAESENTATIONEN
KONVERTIEREN
.
360
5.8.2
STRING-INHALT
IN
EINEN
PRIMITIVEN
WERT
KONVERTIEREN
.
362
5.8.3
STRING-REPRAESENTATION
IN
DEN
FORMATEN
BINAER,
HEX
UND
OKTAL
*
.
364
5.9
STRINGS
ZUSAMMENHAENGEN
(KONKATENIEREN)
.
368
5.9.1
STRINGS
MIT
STRINGJOINER
ZUSAMMENHAENGEN
.
368
5.10
ZERLEGEN
VON
ZEICHENKETTEN
.
370
5.10.1
SPLITTEN
VON
ZEICHENKETTEN
MIT
SPLIT(.)
.
371
5.10.2
YES
WE
CAN,
YES
WE
SCAN
-
DIE
KLASSE
SCANNER
.
372
5.11
AUSGABEN
FORMATIEREN
.
375
5.11.1
FORMATIEREN
UND
AUSGEBEN
MIT
FORMAT()
.
375
5.12
ZUM
WEITERLESEN
.
381
6
EIGENE
KLASSEN
SCHREIBEN
383
6.1
EIGENE
KLASSEN
MIT
EIGENSCHAFTEN
DEKLARIEREN
.
383
6.1.1
OBJEKTVARIABLENDEKLARIEREN
.
384
6.1.2
METHODEN
DEKLARIEREN
.
387
6.1.3
VERDECKTE
(SHADOWED)
VARIABLEN
.
389
6.1.4
DIE
THIS-REFERENZ
.
391
6.2
PRIVATSPHAERE
UND
SICHTBARKEIT
.
394
6.2.1
FUER
DIE
OEFFENTLICHKEIT:
PUBLIC
.
395
6.2.2
KEIN
PUBLIC
VIEWING
-
PASSWOERTER
SIND
PRIVAT
.
395
6.2.3
WIESO
NICHT
FREIE
METHODEN
UND
VARIABLEN
FUER
ALLE?
.
397
6.2.4
PRIVAT
IST
NICHT
GANZ
PRIVAT:
ES
KOMMT
DARAUF
AN,
WER'S
SIEHT
*
.
397
6.2.5
ZUGRIFFSMETHODEN
FUER
OBJEKTVARIABLEN
DEKLARIEREN
.
398
6.2.6
SETTER
UND
GETTER
NACH
DER
JAVABEANS-SPEZIFIKATION
.
398
6.2.7
PAKETSICHTBAR
.
401
6.2.8
ZUSAMMENFASSUNG
ZUR
SICHTBARKEIT
.
402
6.3
EINE
FUER
ALLE
-
STATISCHE
METHODEN
UND
KLASSENVARIABLEN
.
405
6.3.1
WARUM
STATISCHE
EIGENSCHAFTEN
SINNVOLL
SIND
.
406
6.3.2
STATISCHE
EIGENSCHAFTEN
MIT
STATIC
.
406
6.3.3
STATISCHE
EIGENSCHAFTEN
UEBER
REFERENZEN
NUTZEN?
*
.
408
6.3.4
WARUM
DIE
GROSS-UND
KLEINSCHREIBUNG
WICHTIG
IST
*
.
409
6.3.5
STATISCHE
VARIABLEN
ZUM
DATENAUSTAUSCH
*
.
409
6.3.6
STATISCHE
EIGENSCHAFTEN
UND
OBJEKTEIGENSCHAFTEN
*
.
411
6.4
KONSTANTEN
UND
AUFZAEHLUNGEN
.
412
6.4.1
KONSTANTEN
UEBER
STATISCHE
FINALE
VARIABLEN
.
412
6.4.2
TYPUNSICHERE
AUFZAEHLUNGEN
.
413
6.4.3
AUFZAEHLUNGSTYPEN:
TYPSICHERE
AUFZAEHLUNGEN
MIT
ENUM
.
415
6.5
OBJEKTE
ANLEGEN
UND
ZERSTOEREN
.
420
6.5.1
KONSTRUKTOREN
SCHREIBEN
.
420
6.5.2
VERWANDTSCHAFT
VON
METHODE
UND
KONSTRUKTOR
.
422
6.5.3
DER
STANDARD-KONSTRUKTOR
(DEFAULT
CONSTRUCTOR)
.
423
6.5.4
PARAMETRISIERTE
UND
UEBERLADENE
KONSTRUKTOREN
.
424
6.5.5
COPY-KONSTRUKTOR
.
426
6.5.6
EINEN
ANDEREN
KONSTRUKTOR
DER
GLEICHEN
KLASSE
MIT
THIS(.)
AUFRUFEN
.
427
6.5.7
IMMUTABLE-OBJEKTE
UND
WITHER-METHODEN
.
430
6.5.8
IHR
FEHLT
UNS
NICHT-DER
GARBAGE-COLLECTOR
.
432
6.6
KLASSEN
UND
OBJEKTINITIALISIERUNG
*
.
434
6.6.1
INITIALISIERUNG
VON
OBJEKTVARIABLEN
.
434
6.6.2
STATISCHE
BLOECKE
ALS
KLASSENINITIALISIERER
.
436
6.6.3
INITIALISIERUNG
VON
KLASSENVARIABLEN
.
437
6.6.4
EINCOMPILIERTE
BELEGUNGEN
DER
KLASSENVARIABLEN
.
437
6.6.5
EXEMPLARINITIALISIERER
(INSTANZINITIALISIERER)
.
438
6.6.6
FINALE
WERTE
IM
KONSTRUKTOR
UND
IN
STATISCHEN
BLOECKEN
SETZEN
.
441
6.7
ZUM
WEITERLESEN
.
443
7
OBJEKTORIENTIERTE
BEZIEHUNGSFRAGEN
445
7.1
ASSOZIATIONEN
ZWISCHEN
OBJEKTEN
.
445
7.1.1
UNIDIREKTIONALE
I:L-BEZIEHUNG
.
446
7.1.2
ZWEI
FREUNDE
MUESST
IHR
WERDEN
-
BIDIREKTIONALE
L:L-BEZIEHUNGEN
.
448
7.1.3
UNIDIREKTIONALE
L:N-BEZIEHUNG
.
449
7.2
VERERBUNG
.
455
7.2.1
VERERBUNG
IN
JAVA
.
456
7.2.2
EREIGNISSE
MODELLIEREN
.
456
7.2.3
DIE
IMPLIZITE
BASISKLASSE
JAVA.LANG.OBJECT
.
458
7.2.4
EINFACH-UND
MEHRFACHVERERBUNG
*
.
459
7.2.5
SEHEN
KINDER
ALLES?
DIE
SICHTBARKEIT
PROTECTED
.
459
7.2.6
KONSTRUKTOREN
IN
DER
VERERBUNG
UND
SUPER(.)
.
460
7.3
TYPEN
IN
HIERARCHIEN
.
465
7.3.1
AUTOMATISCHE
UND
EXPLIZITE
TYPUMWANDLUNG
.
466
7.3.2
DAS
SUBSTITUTIONSPRINZIP
.
469
7.3.3
TYPEN
MIT
DEM
INSTANCEOF-OPERATOR
TESTEN
.
471
7.3.4
PATTERN-MATCHING
BEI
INSTANCEOF
.
474
7.3.5
PATTERN-MATCHING
BEI
SWITCH
.
476
7.4
METHODEN
UEBERSCHREIBEN
.
479
7.4.1
METHODEN
IN
UNTERKLASSEN
MIT
NEUEM
VERHALTEN
AUSSTATTEN
.
479
7.4.2
MIT
SUPER
AN
DIE
ELTERN
.
483
7.5
DRUM
PRUEFE,
WER
SICH
DYNAMISCH
BINDET
.
485
7.5.1
GEBUNDEN
AN
TOSTRING()
.
486
7.5.2
IMPLEMENTIERUNG
VON
SYSTEM.OUT.PRINTLN(OBJECT)
.
487
7.6
FINALE
KLASSEN
UND
FINALE
METHODEN
.
488
7.6.1
FINALE
KLASSEN
.
488
7.6.2
NICHT
UEBERSCHREIBBARE
(FINALE)
METHODEN
.
489
7.7
ABSTRAKTE
KLASSEN
UND
ABSTRAKTE
METHODEN
.
490
7.7.1
ABSTRAKTE
KLASSEN
.
491
7.7.2
ABSTRAKTE
METHODEN
.
'
492
7.8
WEITERES
ZUM
UEBERSCHREIBEN
UND
DYNAMISCHEN
BINDEN
.
499
7.8.1
NICHT
DYNAMISCH
GEBUNDEN
BEI
PRIVATEN,
STATISCHEN
UND
FINALEN
METHODEN
.
499
7.8.2
KOVARIANTE
RUECKGABETYPEN
.
500
7.8.3
ARRAY-TYPEN
UND
KOVARIANZ
*
.
501
7.8.4
DYNAMISCH
GEBUNDEN
AUCH
BEI
KONSTRUKTORAUFRUFEN
*
.
502
7.8.5
KEINE
DYNAMISCHE
BINDUNG
BEI
UEBERDECKTEN
OBJEKTVARIABLEN
*
.
504
7.9
ZUM
WEITERLESEN
UND
PROGRAMMIERAUFGABE
.
505
8
RECORDS,
SCHNITTSTELLEN,
AUFZAEHLUNGEN,
VERSIEGELTE
KLASSEN
507
8.1
RECORDS
.
507
8.1.1
EINFACHE
RECORDS
.
507
8.1.2
RECORDS
MIT
METHODEN
.
509
8.1.3
KONSTRUKTOREN
VON
RECORDS
ANPASSEN
.
511
8.1.4
KONSTRUKTOREN
ERGAENZEN
.
513
8.1.5
RECORD-PATTERNS
ZUR
DESTRUKTURIERUNG
.
514
8.1.6
RECORDS:
ZUSAMMENFASSUNG
.
518
8.2
SCHNITTSTELLEN
.
518
8.2.1
SCHNITTSTELLEN
SIND
NEUE
TYPEN
.
518
8.2.2
SCHNITTSTELLEN
DEKLARIEREN
.
519
8.2.3
ABSTRAKTE
METHODEN
IN
SCHNITTSTELLEN
.
519
8.2.4
IMPLEMENTIEREN
VON
SCHNITTSTELLEN
.
520
8.2.5
EIN
POLYMORPHIE-BEISPIEL
MIT
SCHNITTSTELLEN
.
523
8.2.6
RECORDS
IMPLEMENTIEREN
SCHNITTSTELLEN
.
525
8.2.7
DIE
MEHRFACHVERERBUNG
BEI
SCHNITTSTELLEN
.
526
8.2.8
KEINE
KOLLISIONSGEFAHR
BEI
MEHRFACHVERERBUNG
*
.
529
8.2.9
ERWEITERN
VON
INTERFACES-SUBINTERFACES
.
530
8.2.10
KONSTANTENDEKLARATIONEN
BEI
SCHNITTSTELLEN
.
531
8.2.11
NACHTRAEGLICHES
IMPLEMENTIEREN
VON
SCHNITTSTELLEN
*
.
531
8.2.12
STATISCHE
AUSPROGRAMMIERTE
METHODEN
IN
SCHNITTSTELLEN
.
532
8.2.13
ERWEITERN
UND
AENDERN
VON
SCHNITTSTELLEN
.
534
8.2.14
DEFAULT-METHODEN
.
536
8.2.15
ERWEITERTE
SCHNITTSTELLEN
DEKLARIEREN
UND
NUTZEN
.
537
8.2.16
OEFFENTLICHE
UND
PRIVATE
SCHNITTSTELLENMETHODEN
.
541
8.2.17
ERWEITERTE
SCHNITTSTELLEN,
MEHRFACHVERERBUNG
UND
MEHRDEUTIGKEITEN
*
.
541
8.2.18
BAUSTEINE
BILDEN
MIT
DEFAULT-METHODEN
*
.
545
8.2.19
MARKIERUNGSSCHNITTSTELLEN*
.
548
8.2.20
(ABSTRAKTE)
KLASSEN
UND
SCHNITTSTELLEN
IM
VERGLEICH
.
549
8.3
AUFZAEHLUNGSTYPEN
.
550
8.3.1
METHODEN
AUF
ENUM-OBJEKTEN
.
550
8.3.2
AUFZAEHLUNGEN
MIT
EIGENEN
METHODEN
*
.
554
8.3.3
ENUM
MIT
EIGENEN
KONSTRUKTOREN
UND
INITIAIISIERERN
.
556
8.3.4
ENUM
KANN
SCHNITTSTELLEN
IMPLEMENTIEREN
.
559
8.4
VERSIEGELTE
KLASSEN
UND
SCHNITTSTELLEN
.
560
8.4.1
VERSIEGELTE
KLASSEN
UND
SCHNITTSTELLEN
(SEALED
CLASSES/INTERFACES)
.
562
8.4.2
UNTERKLASSEN
SIND
FINAL,
SEALED,
NON-SEALED
.
564
8.4.3
VOLLSTAENDIGE
ABDECKUNG
VON
AUFZAEHLUNGEN
.
564
8.4.4
ABKUERZENDESCHREIBWEISEN
.
565
8.4.5
VERSIEGELTE
SCHNITTSTELLEN
UND
RECORDS
.
566
8.5
ZUM
WEITERLESEN
.
568
9
AUSNAHMEN
MUESSEN
SEIN
569
9.1
PROBLEMBEREICHE
EINZAEUNEN
.
570
9.1.1
EXCEPTIONS
IN
JAVA
MITTRY
UND
CATCH
.
570
9.1.2
GEPRUEFTE
UND
UNGEPRUEFTE
AUSNAHMEN
.
571
9.1.3
EINE
NUMBERFORMATEXCEPTION
FLIEGT
(UNGEPRUEFTE
AUSNAHME)
.
571
9.1.4
DATUM-ZEITSTEMPEL
IN
TEXTDATEI
ANHAENGEN
(GEPRUEFTE
AUSNAHME)
.
573
9.1.5
WIEDERHOLUNG
ABGEBROCHENER
BEREICHE
*
.
576
9.1.6
BITTE
NICHT
SCHLUCKEN
-
LEERE
CATCH-BLOECKE
.
576
9.1.7
MEHRERE
AUSNAHMEN
AUFFANGEN
.
577
9.1.8
ZUSAMMENFASSEN
GLEICHER
CATCH-BLOECKE
MIT
DEM
MULTI-CATCH
.
578
9.2
AUSNAHMEN
MIT
THROWS
NACH
OBEN
REICHEN
.
579
9.2.1
THROWS
BEI
KONSTRUKTOREN
UND
METHODEN
.
579
9.3
DIE
KLASSENHIERARCHIE
DER
AUSNAHMEN
.
580
9.3.1
EIGENSCHAFTEN
DES
EXCEPTION-OBJEKTS
.
580
9.3.2
BASISTYP
THROWABLE
.
581
9.3.3
DIE
EXCEPTION-HIERARCHIE
.
582
9.3.4
OBERAUSNAHMEN
AUFFANGEN
.
583
9.3.5
SCHON
GEFANGEN?
.
585
9.3.6
ABLAUF
EINER
AUSNAHMESITUATION
.
586
9.3.7
NICHT
ZU
ALLGEMEIN
FANGEN!
.
586
9.3.8
BEKANNTE
RUNTIMEEXCEPTION-KLASSEN
.
588
9.3.9
KANN
MAN
ABFANGEN,
MUSS
MAN
ABER
NICHT
.
589
9.4
ABSCHLUSSBEHANDLUNG
MIT
FINAHY
.
590
9.5
AUSLOESEN
EIGENER
EXCEPTIONS
.
595
9.5.1
MITTHROW
AUSNAHMEN
AUSLOESEN
.
595
9.5.2
VORHANDENE
RUNTIME-AUSNAHMETYPEN
KENNEN
UND
NUTZEN
.
597
9.5.3
PARAMETER
TESTEN
UND
GUTE
FEHLERMELDUNGEN
.
600
9.5.4
NEUE
EXCEPTION-KLASSEN
DEKLARIEREN
.
601
9.5.5
EIGENE
AUSNAHMEN
ALS
UNTERKLASSEN
VON
EXCEPTION
ODER
RUNTIMEEXCEPTION?
.
603
9.5.6
AUSNAHMEN
ABFANGEN
UND
WEITERLEITEN
*
.
606
9.5.7
AUFRUF-STACK
VON
AUSNAHMEN
VERAENDERN
*
.
607
9.5.8
GESCHACHTELTE
AUSNAHMEN
*
.
608
9.6
TRY
MIT
RESSOURCEN
(AUTOMATISCHES
RESSOURCEN-MANAGEMENT)
.
611
9.6.1
TRY
MIT
RESSOURCEN
.
612
9.6.2
DIE
SCHNITTSTELLE
AUTOCLOSEABLE
.
613
9.6.3
AUSNAHMEN
VOM
CLOSE()
.
614
9.6.4
TYPEN,
DIE
AUTOCLOSEABLE
UND
CLOSEABLE
SIND
.
615
9.6.5
MEHRERE
RESSOURCEN
NUTZEN
.
616
9.6.6
TRY
MIT
RESSOURCEN
AUF
NULL-RESSOURCEN
.
618
9.6.7
UNTERDRUECKTE
AUSNAHMEN
*
.
618
9.7
BESONDERHEITEN
BEIDER
AUSNAHMEBEHANDLUNG*
.
621
9.7.1
RUECKGABEWERTE
BEI
AUSGELOESTEN
AUSNAHMEN
.
622
9.7.2
AUSNAHMEN
UND
RUECKGABEN
VERSCHWINDEN
-
DAS
DUO
RETURN
UND
FINALLY
.
622
9.7.3
THROWS
BEI
UEBERSCHRIEBENEN
METHODEN
.
623
9.7.4
NICHT
ERREICHBARE
CATCH-KLAUSELN
.
625
9.8
HARTE
FEHLER
-
ERROR
*
.
627
9.9
ASSERTIONS*
.
627
9.9.1
ASSERTIONS
IN
EIGENEN
PROGRAMMEN
NUTZEN
.
628
9.9.2
ASSERTIONS
AKTIVIEREN
UND
LAUFZEIT-ERRORS
.
628
9.9.3
ASSERTIONS
FEINER
AKTIVIEREN
ODER
DEAKTIVIEREN
.
630
9.10
ZUM
WEITERLESEN
.
630
10
GESCHACHTELTE
TYPEN
631
10.1
GESCHACHTELTE
KLASSEN,
SCHNITTSTELLEN
UND
AUFZAEHLUNGEN
.
631
10.2
STATISCHE
GESCHACHTELTE
TYPEN
.
633
10.3
NICHTSTATISCHE
GESCHACHTELTE
TYPEN
.
635
10.3.1
EXEMPLARE
INNERER
KLASSEN
ERZEUGEN
.
635
10.3.2
DIE
THIS-REFERENZ
.
636
10.3.3
VOM
COMPILER
GENERIERTE
KLASSENDATEIEN
*
.
637
10.4
LOKALE
KLASSEN
.
638
10.4.1
BEISPIEL
MIT
EIGENER
KLASSENDEKLARATION
.
638
10.4.2
LOKALE
KLASSE
FUER
EINEN
TIMER
NUTZEN
.
639
10.5
ANONYME
INNERE
KLASSEN
.
639
10.5.1
NUTZUNG
EINER
ANONYMEN
INNEREN
KLASSE
FUER
DEN
TIMER
.
640
10.5.2
UMSETZUNG
INNERER
ANONYMER
KLASSEN
*
.
641
10.5.3
KONSTRUKTOREN
INNERER
ANONYMER
KLASSEN
.
642
10.6
VERMISCHTES
.
644
10.6.1
ZUGRIFF
AUF
LOKALE
VARIABLEN
AUS
LOKALEN
UND
ANONYMEN
KLASSEN
*
.
644
10.6.2
THIS
IN
UNTERKLASSEN
*
.
644
10.6.3
GESCHACHTELTE
KLASSEN
GREIFEN
AUF
PRIVATE
EIGENSCHAFTEN
ZU
.
645
10.6.4
NESTER
.
647
10.7
ZUM
WEITERLESEN
.
648
11
BESONDERE
TYPEN
DER
JAVA
SE
649
11.1
OBJECT
IST
DIE
MUTTER
ALLER
KLASSEN
.
650
11.1.1
KLASSENOBJEKTE
.
650
11.1.2
OBJEKTIDENTIFIKATION
MIT
TOSTRING()
.
651
11.1.3
OBJEKTGLEICHWERTIGKEIT
MIT
EQUALS(.)
UND
IDENTITAET
.
653
11.1.4
KLONEN
EINES
OBJEKTS
MIT
CLONE()
*
.
659
11.1.5
HASHWERTE
UEBER
HASHCODE()
LIEFERN
*
.
664
11.1.6
SYSTEM.IDENTITYHASHCODE(.)
UND
DAS
PROBLEM
DER
NICHT
EINDEUTIGEN
OBJEKTVERWEISE
*
.
671
11.1.7
SYNCHRONISATION
*
.
672
11.2
SCHWACHE
REFERENZEN
UND
CLEANER
.
672
11.3
DIE
UTILITY-KLASSE
JAVA.UTIL.OBJECTS
.
673
11.3.1
EINGEBAUTE
NULL-TESTS
FUER
EQUALS(.)/HASHCODE()
.
674
11.3.2
OBJECTS.TOSTRING(.)
.
675
11.3.3
NULL-PRUEFUNGEN
MIT
EINGEBAUTER
AUSNAHMEBEHANDLUNG
.
675
11.3.4
TESTSAUFNULL
.
676
11.3.5
INDEXBEZOGENE
PROGRAMMARGUMENTE
AUF
KORREKTHEIT
PRUEFEN
.
677
11.4
VERGLEICHEN
VON
OBJEKTEN
UND
ORDNUNG
HERSTELLEN
.
677
11.4.1
NATUERLICH
GEORDNET
ODER
NICHT?
.
678
11.4.2
COMPARE*()-METHODE
DER
SCHNITTSTELLEN
COMPARABLE
UND
COMPARATOR
.
679
11.4.3
RUECKGABEWERTE
KODIEREN
DIE
ORDNUNG
.
680
11.4.4
MIT
EINEM
BEISPIEL-COMPARATOR
SUESSIGKEITEN
NACH
KALORIEN
SORTIEREN
.
'
680
11.4.5
TIPPS
FUER
COMPARATOR-UND
COMPARABLE-IMPLEMENTIERUNGEN
.
682
11.4.6
STATISCHE
UND
DEFAULT-METHODEN
IN
COMPARATOR
.
683
11.5
WRAPPER-KLASSEN
UND
AUTOBOXING
.
686
11.5.1
WRAPPER-OBJEKTE
ERZEUGEN
.
688
11.5.2
KONVERTIERUNGEN
IN
EINE
STRING-REPRAESENTATION
.
689
11.5.3
VON
EINER
STRING-REPRAESENTATION
PARSEN
.
691
11.5.4
DIE
BASISKLASSE
NUMBER
FUER
NUMERISCHE
WRAPPER-OBJEKTE
.
691
11.5.5
VERGLEICHE
DURCHFUEHREN
MIT
COMPARE*(.),
COMPARETO(.),
EQUALS(.)
UND
HASHWERTEN
.
693
11.5.6
STATISCHE
REDUZIERUNGSMETHODEN
IN
WRAPPER-KLASSEN
.
696
11.5.7
KONSTANTEN
FUER
DIE
GROESSE
EINES
PRIMITIVEN
TYPS
.
697
11.5.8
BEHANDELN
VON
VORZEICHENLOSEN
ZAHLEN
*
.
697
11.5.9
DIE
KLASSEN
INTEGER
UND
LONG
.
699
11.5.10
DIE
KLASSEN
DOUBLE
UND
FLOAT
FUER
FLIESSKOMMAZAHLEN
.
700
11.5.11
DIE
BOOLEAN-KLASSE
.
700
11.5.12
AUTOBOXING:
BOXING
UND
UNBOXING
.
701
11.6
ITERATOR,
ITERABLE
*
.
706
11.6.1
DIE
SCHNITTSTELLE
ITERATOR
.
706
11.6.2
WER
DEN
ITERATOR
LIEFERT
.
710
11.6.3
DIE
SCHNITTSTELLE
ITERABLE
.
710
11.6.4
ERWEITERTES
FOR
UND
ITERABLE
.
711
11.6.5
INTERNE
ITERATION
.
711
11.6.6
EIN
EIGENES
ITERABLE
IMPLEMENTIEREN
*
.
712
11.7 ANNOTATIONEN
IN
DER
JAVA
SE
.
714
11.7.1
ORTE
FUER
ANNOTATIONEN
.
714
11.7.2
ANNOTATIONSTYPEN
AUS
JAVA.LANG
.
715
11.7.3
@DEPRECATED
.
715
11.7.4
ANNOTATIONEN
MIT
ZUSAETZLICHEN
INFORMATIONEN
.
716
11.7.5
@SUPPRESSWARNINGS
.
716
11.8
ZUM
WEITERLESEN
.
719
12
GENERICS T
721
12.1
EINFUEHRUNG
IN
JAVA
GENERICS
.
721
12.1.1
MENSCH
VERSUS
MASCHINE-TYPPRUEFUNG
DES
COMPILERS
UND
DER
LAUFZEITUMGEBUNG
.
721
12.1.2
RAKETEN
.
722
12.1.3
GENERISCHE
TYPEN
DEKLARIEREN
.
724
12.1.4
GENERICS
NUTZEN
.
726
12.1.5
DIAMONDS
AREFOREVER
.
729
12.1.6
GENERISCHE
SCHNITTSTELLEN
.
732
12.1.7
GENERISCHE
METHODEN/KONSTRUKTOREN
UND
TYP-INFERENZ
.
733
12.2
UMSETZEN
DER
GENERICS,
TYPLOESCHUNG
UND
RAW-TYPES
.
737
12.2.1
REALISIERUNGSMOEGLICHKEITEN
.
737
12.2.2
TYPLOESCHUNG
(TYPE
ERASURE)
.
738
12.23
PROBLEME
DER
TYPLOESCHUNG
.
739
12.2.4
RAW-TYPE
.
743
12.3
DIE
TYPEN
UEBER
BOUNDS
EINSCHRAENKEN
.
745
12.3.1
EINFACHE
EINSCHRAENKUNGEN
MIT
EXTENDS
.
745
12.3.2
WEITERE
OBERTYPEN
MIT
&
.
748
12.4
TYPPARAMETER
IN
DER
THROWS-KLAUSEL
*
.
748
12.4.1
DEKLARATION
EINER
KLASSE
MIT
TYPVARIABLE
E
EXTENDS
EXCEPTION
.
748
12.4.2
PARAMETRISIERTER
TYP
BEI
TYPVARIABLE
E
EXTENDS
EXCEPTION
.
749
12.5
GENERICS
UND
VERERBUNG,
INVARIANZ
.
752
12.5.1
ARRAYS
SIND
KOVARIANT
.
752
12.5.2
GENERICS
SIND
NICHT
KOVARIANT,
SONDERN
INVARIANT
.
752
12.5.3
WILDCARDS
MIT
?
.
753
12.5.4
BOUNDED
WILDCARDS
.
756
12.5.5
BOUNDED-WILDCARD-TYPEN
UND
BOUNDED-TYPVARIABLEN
.
759
12.5.6
DAS
LESS-PRINZIP
.
761
12.5.7
ENUM E
EXTENDS
ENUM E
*
.
764
12.6
KONSEQUENZEN
DER
TYPLOESCHUNG:
TYP-TOKEN,
ARRAYS
UND
BRUECKEN
*
.
766
12.6.1
TYP-TOKEN
.
766
12.6.2
SUPER-TYPE-TOKEN
.
768
12.6.3
GENERICS
UND
ARRAYS
.
769
12.6.4
BRUECKENMETHODEN
*
.
770
12.7
ZUM
WEITERLESEN
.
775
13
LAMBDA-AUSDRUECKE
UND
FUNKTIONALE
PROGRAMMIERUNG
777
13.1
FUNKTIONALE
SCHNITTSTELLEN
UND
LAMBDA-AUSDRUECKE
.
777
13.1.1
KLASSEN
IMPLEMENTIEREN
SCHNITTSTELLEN
.
777
13.1.2
LAMBDA-AUSDRUECKE
IMPLEMENTIEREN
SCHNITTSTELLEN
.
779
13.1.3
FUNKTIONALE
SCHNITTSTELLEN
.
780
13.1.4
DER
TYP
EINES
LAMBDA-AUSDRUCKS
ERGIBT
SICH
DURCH
DEN
ZIELTYP
.
781
13.1.5
ANNOTATION
@FUNCTIONALLNTERFACE
.
786
13.1.6
SYNTAX
FUER
LAMBDA-AUSDRUECKE
.
787
13.1.7
DIE
UMGEBUNG
DER
LAMBDA-AUSDRUECKE
UND
VARIABIENZUGRIFFE
.
792
13.1.8
AUSNAHMEN
IN
LAMBDA-AUSDRUECKEN
.
797
13.1.9
KLASSEN
MIT
EINER
ABSTRAKTEN
METHODE
ALS
FUNKTIONALE
SCHNITTSTELLE?
*
.
801
13.2
METHODENREFERENZ
.
801
13.2.1
MOTIVATION
.
801
13.2.2
METHODENREFERENZEN
MIT
.
802
13.2.3
VARIANTEN
VON
METHODENREFERENZEN
.
803
13.3
KONSTRUKTORREFERENZ
.
805
13.3.1
KONSTRUKTORREFERENZEN
SCHREIBEN
.
806
13.3.2
PARAMETERLOSE
UND
PARAMETRISIERTE
KONSTRUKTOREN
.
807
13.3.3
NUETZLICHE
VORDEFINIERTE
SCHNITTSTELLEN
FUER
KONSTRUKTORREFERENZEN
.
808
13.4
FUNKTIONALE
PROGRAMMIERUNG
.
809
13.4.1
CODE
=
DATEN
.
809
13.4.2
PROGRAMMIERPARADIGMEN:
IMPERATIV
ODER
DEKLARATIV
.
810
13.4.3
DAS
WESEN
DER
FUNKTIONALEN
PROGRAMMIERUNG
.
811
13.4.4
FUNKTIONALE
PROGRAMMIERUNG
UND
FUNKTIONALE
PROGRAMMIERSPRACHEN
.
814
13.4.5
FUNKTIONEN
HOEHERER
ORDNUNG
AM
BEISPIEL
VON
COMPARATOR
.
816
13.4.6
LAMBDA-AUSDRUECKE
ALS
ABBILDUNGEN
BZW.
FUNKTIONEN
BETRACHTEN
.
816
13.5
FUNKTIONALE
SCHNITTSTELLEN
AUS
DEM
JAVA.UTIL.FUNCTION-PAKET
.
818
13.5.1
BLOECKE
MIT
CODE
UND
DIE
FUNKTIONALE
SCHNITTSTELLE
CONSUMER
.
818
13.5.2
SUPPLIER
.
820
13.5.3
PRAEDIKATE
UND
JAVA.UTIL.FUNCTION.PREDICATE
.
821
13.5.4
FUNKTIONEN
UEBER
DIE
FUNKTIONALE
SCHNITTSTELLE
JAVA.UTIL.FUNCTION.FUNCTION
.
823
13.5.5
EIN
BISSCHEN
BI
.
827
13.5.6
FUNKTIONALE
SCHNITTSTELLEN
MIT
PRIMITIVEN
.
830
13.6
OPTIONAL
IST
KEINE
NULLNUMMER
.
832
13.6.1
EINSATZ
VON
NULL
.
833
13.6.2
DER
OPTIONAL-TYP
.
835
13.6.3
ERST
MAL
FUNKTIONAL
MIT
OPTIONAL
.
838
13.6.4
PRIMITIV-OPTIONALES
MIT
SPEZIELLEN
OPTIONAL*-KLASSEN
.
841
13.7
WAS
IST
JETZT
SO
FUNKTIONAL?
.
843
13.8
ZUM
WEITERLESEN
.
845
14
ARCHITEKTUR,
DESIGN
UND
ANGEWANDTE
OBJEKTORIENTIERUNG
847
14.1
SOLIDE
MODELLIERUNG
.
847
14.1.1
DRY,
KISS
UND
YAGNI
.
848
14.1.2
SOLID
.
848
14.1.3
SEI
NICHT
STUPID
.
850
14.2
ARCHITEKTUR,
DESIGN
UND
IMPLEMENTIERUNG
.
851
14.3
DESIGN-PATTERNS
(ENTWURFSMUSTER)
.
852
14.3.1
MOTIVATION
FUER
DESIGN-PATTERNS
.
852
14.3.2
SINGLETON
.
853
14.3.3
FABRIKMETHODEN
.
854
14.3.4
DAS
BEOBACHTER-PATTERN
MIT
LISTENER
REALISIEREN
.
855
14.4
ZUM
WEITERLESEN
.
859
15
JAVA
PLATFORM
MODULE
SYSTEM
861
15.1
KLASSENLADER
(DASS
LOADER)
UND
MODUL-/KLASSENPFAD
.
861
15.1.1
KLASSENLADEN
AUF
ABRUF
.
861
15.1.2
KLASSENLADER
BEI
DER
ARBEIT
ZUSEHEN
.
862
15.1.3
JMOD-DATEIEN
UND
JAR-DATEIEN
.
863
15.1.4
WOHER
DIE
KLASSEN
KOMMEN:
SUCHORTE
UND
SPEZIELLE
KLASSENLADER
. 864
15.1.5
SETZEN
DES
SUCHPFADES
.
865
15.2
MODULE
IM
JPMS
EINBINDEN
.
867
15.2.1
WER
SIEHT
WEN?
.
868
15.2.2
PLATTFORM-MODULE
UND
EIN
JMOD-BEISPIEL
.
869
15.2.3
INTERNE
PLATTFORMEIGENSCHAFTEN
NUTZEN,
--ADD-EXPORTS
.
870
15.2.4
NEUE
MODULE
EINBINDEN
.
872
15.3
EIGENE
MODULE
ENTWICKELN
.
873
15.3.1
MODUL
COM.TUTEGO.CANDYTESTER
.
873
15.3.2
MODULDEKLARATION
MIT
MODULE-INFO.JAVA
UND
EXPORTS
.
874
15.3.3
MODUL
COM.TUTEGO.MAIN
.
875
15.3.4
MODULINFODATEI
MIT
REQUIRES
.
875
15.3.5
MODULEINSETZER
SCHREIBEN,
JVM-SCHALTER
-P
UND
-M
.
876
15.3.6
MODULINFODATEI-EXPERIMENTE
.
877
15.3.7
AUTOMATISCHE
MODULE
.
878
15.3.8
UNBENANNTES
MODUL
.
879
15.3.9
LESBARKEIT
UND
ZUGREIFBARKEIT
.
879
15.3.10
MODUL-MIGRATION
.
880
15.4
ZUM
WEITERLESEN
.
YY
881
16
DIE
KLASSENBIBLIOTHEK
883
16.1
DIE
JAVA-KLASSENPHILOSOPHIE
.
883
16.1.1
MODUL,
PAKET,
TYP
.
883
16.1.2
UEBERSICHT
UEBER
DIE
PAKETE
DER
STANDARDBIBLIOTHEK
.
886
16.2
EINFACHE
ZEITMESSUNG
UND
PROFILING
*
.
890
16.3
DIE
KLASSE
CLASS
.
891
16.3.1
AN
EIN
CLASS-OBJEKT
KOMMEN
.
892
16.3.2
EINE
CLASS
IST
EIN
TYPE
.
894
16.4
DIE
UTILITY-KLASSEN
SYSTEM
UND
PROPERTIES
.
894
16.4.1
SPEICHER
DER
JVM
.
895
16.4.2
ANZAHL
DER
CPUS
BZW.
KERNE
.
896
16.4.3
SYSTEMEIGENSCHAFTEN
DER
JAVA-UMGEBUNG
.
897
16.4.4
EIGENE
PROPERTIES
VON
DER
KONSOLE
AUS
SETZEN
*
.
898
16.4.5
ZEILENUMBRUCHZEICHEN,
LINE.SEPARATOR
.
900
16.4.6
UMGEBUNGSVARIABLEN
DES
BETRIEBSSYSTEMS
.
900
16.5
SPRACHEN
DER
LAENDER
.
902
16.5.1
SPRACHEN
IN
REGIONEN
UEBER
LOCALE-OBJEKTE
.
902
16.6
WICHTIGE
DATUM-KLASSEN
IM
UEBERBLICK
.
906
16.6.1
DER
1.1.1970
.
907
16.6.2
SYSTEM.CURRENTTIMEAAILLISO
.
907
16.6.3
EINFACHE
ZEITUMRECHNUNGEN
DURCH
TIMEUNIT
.
908
16.7
DATE-TIME-API
.
909
16.7.1
MENSCHENZEIT
UND
MASCHINENZEIT
.
910
16.7.2
DIE
DATUMSKLASSE
LOCALDATE
.
913
16.8
LOGGING
MIT
JAVA
.
914
16.8.1
LOGGING-APIS
.
914
16.8.2
LOGGING
MIT
JAVA.UTIL.LOGGING
.
914
16.9
MAVEN:
BUILD-MANAGEMENT
UND
ABHAENGIGKEITEN
AUFLOESEN
.
917
16.9.1
DEPENDENCY
HINZUNEHMEN
.
917
16.9.2
LOKALES
UND
DAS
REMOTE
REPOSITORY
.
918
16.9.3
LEBENSZYLUS,
PHASEN
UND
MAVEN-PLUGINS
.
918
16.10
ZUM
WEITERLESEN
.
919
17
EINFUEHRUNG
IN
DIE
NEBENLAEUFIGE
PROGRAMMIERUNG
921
17.1
NEBENLAEUFIGKEIT
UND
PARALLELITAET
.
921
17.1.1
MULTITASKING,
PROZESSE
UND
THREADS
.
922
17.1.2
WIE
NEBENLAEUFIGE
PROGRAMME
DIE
GESCHWINDIGKEIT
STEIGERN
KOENNEN
.
923
17.1.3
JAVA-THREADS
.
924
17.1.4
WAS
JAVA
FUER
NEBENLAEUFIGKEIT
ALLES
BIETET
.
925
17.2
EXISTIERENDE
THREADS
UND
NEUE
THREADS
ERZEUGEN
.
925
17.2.1
MAIN-THREAD
.
925
17.2.2
WER
BIN
ICH?
.
926
17.2.3
DIE
SCHNITTSTELLE
RUNNABLE
IMPLEMENTIEREN
.
926
17.2.4
THREAD
AUFBAUEN
.
927
17.2.5
THREAD
MIT
RUNNABLE
STARTEN
.
928
17.2.6
RUNNABLE
PARAMETRISIEREN
.
930
17.2.7
DIE
KLASSE
THREAD
ERWEITERN
*
.
931
17.3
THREAD-EIGENSCHAFTEN
UND
ZUSTAENDE
.
931
17.3.1
DER
NAME
EINES
THREADS
.
931
17.3.2
DIE
ZUSTAENDE
EINES
THREADS
*
.
932
17.3.3
SCHLAEFER
GESUCHT
.
932
17.3.4
WANN
THREADS
FERTIG
SIND
.
934
17.3.5
EINEN
THREAD
HOEFLICH
MIT
INTERRUPT
BEENDEN
.
934
17.3.6
UNBEHANDELTE
AUSNAHMEN,
THREAD-ENDE
UND
UNCAUGHTEXCEPTIONHANDLER
.
937
17.3.7
DER
STOP()
VON
AUSSEN
*
.
939
17.3.8
EIN
RENDEZVOUS
MIT
JOIN(.)
*
.
939
17.3.9
ARBEIT
NIEDERLEGEN
UND
WIEDER
AUFNEHMEN
*
.
941
17.3.10
PRIORITAET*
.
941
17.4
DER
AUSFUEHRER
(EXECUTOR)
KOMMT
.
943
17.4.1
DIE
SCHNITTSTELLE
EXECUTOR
.
943
17.4.2
GLUECKLICH
IN
DER
GRUPPE-DIE
THREAD-POOLS
.
945
17.4.3
THREADS
MIT
RUECKGABE
UEBER
CALLABLE
.
947
17.4.4
ERINNERUNGEN
AN
DIE
ZUKUNFT
-
DIE
FUTURE-RUECKGABE
.
949
17.4.5
MEHRERE
CALLABLE-OBJEKTE
ABARBEITEN
.
952
17.4.6
COMPLETIONSERVICE
UND
EXECUTORCOMPLETIONSERVICE
.
953
17.4.7
SCHEDULEDEXECUTORSERVICE:
WIEDERHOLENDE
AUFGABEN
UND
ZEITSTEUERUNGEN
.
955
17.4.8
ASYNCHRONES
PROGRAMMIEREN
MIT
COMPLETABLEFUTURE
(COMPLETIONSTAGE)
.
955
17.5
ZUM
WEITERLESEN
.
958
18
EINFUEHRUNG
IN
DATENSTRUKTUREN
UND
ALGORITHMEN
959
18.1
LISTEN
.
959
18.1.1
ERSTES
LISTEN-BEISPIEL
.
960
18.1.2
AUSWAHLKRITERIUM
ARRAYLIST
ODER
LINKEDLIST
.
961
18.1.3
DIE
SCHNITTSTELLE
LIST
.
961
18.1.4
ARRAYLIST
.
968
18.1.5
LINKEDLIST
.
969
18.1.6
DER
ARRAY-ADAPTER
ARRAYS.ASLIST(.)
.
971
18.1.7
TOARRAY(.)
VON
COLLECTION
VERSTEHEN
-
DIE
GEFAHR
EINER
FALLE
ERKENNEN
.
973
18.1.8
PRIMITIVE
ELEMENTE
IN
DATENSTRUKTUREN
VERWALTEN
.
976
18.2
MENGEN
(SETS)
.
977
18.2.1
EIN
ERSTES
.
977
18.2.2
METHODEN
DER
SCHNITTSTELLE
SET
.
979
18.2.3
HASHSET
.
981
18.2.4
TREESET-DIE
SORTIERTE
MENGE
.
982
18.2.5
DIE
SCHNITTSTELLEN
NAVIGABLESET
UND
SORTEDSET
.
984
18.2.6
LINKEDHASHSET
.
986
18.3
ASSOZIATIVE
SPEICHER
.
987
18.3.1
DIE
KLASSEN
HASHMAP
UND
TREEMAP,
STATISCHE
MAP-METHODEN
.
988
18.3.2
EINFUEGEN
UND
ABFRAGEN
DES
ASSOZIATIVSPEICHERS
.
991
18.4
AUSGEWAEHLTE
BASISTYPEN
.
994
18.5
.
994
18.5.1
DEKLARATIVES
PROGRAMMIEREN
.
994
18.5.2
INTERNE
VERSUS
EXTERNE
ITERATION
.
995
18.5.3
WAS
IST
EIN
STREAM?
.
996
18.6
EINEN
STREAM
ERZEUGEN
.
997
18.6.1
PARALLELE
ODER
SEQUENZIELLE
STREAMS
.
1000
18.7
TERMINALE
OPERATIONEN
.
1001
18.7.1
DIE
ANZAHL
DER
ELEMENTE
.
1001
18.7.2
UND
JETZT
ALLE-FOREACH*(.)
.
1002
18.7.3
EINZELNE
ELEMENTE
AUS
DEM
STROM
HOLEN
.
1002
18.7.4
EXISTENZTESTS
MIT
PRAEDIKATEN
.
1003
18.7.5
EINEN
STROM
AUF
SEIN
KLEINSTES
BZW.
GROESSTES
ELEMENT
REDUZIEREN
.
1004
18.7.6
EINEN
STROM
MIT
EIGENEN
FUNKTIONEN
REDUZIEREN
.
1005
18.7.7
ERGEBNISSE
IN
EINEN
CONTAINER
SCHREIBEN,
TEIL
1:
COLLECT(.)
.
1006
18.7.8
ERGEBNISSE
IN
EINEN
CONTAINER
SCHREIBEN,
TEIL
2:
COLLECTOR
UND
COLLECTORS
.
1007
18.7.9
ERGEBNISSE
IN
EINEN
CONTAINER
SCHREIBEN,
TEIL
3:
GRUPPIERUNGEN
.
1009
18.7.10
STREAM-ELEMENTE
IN
EIN
ARRAY
ODER
EINEN
ITERATOR
UEBERTRAGEN
.
1011
18.8 INTERMEDIAERE
OPERATIONEN
.
1012
18.8.1
ELEMENT-VORSCHAU
.
1013
18.8.2
FILTERN
VON
ELEMENTEN
.
1013
18.8.3
STATUSBEHAFTETE
INTERMEDIAERE
OPERATIONEN
.
1014
18.8.4
PRAEFIX-OPERATION
.
1015
18.8.5
ABBILDUNGEN
.
1016
18.9
ZUM
WEITERLESEN
.
1019
19
EINFUEHRUNG
IN
GRAFISCHE
OBERFLAECHEN
1021
19.1
GUI-FRAMEWORKS
.
1021
19.1.1
KOMMANDOZEILE
.
1021
19.1.2
GRAFISCHE
BENUTZEROBERFLAECHE
.
1021
19.1.3
ABSTRACT
WINDOW
TOOLKIT
(AWT)
.
1022
19.1.4
JAVA
FOUNDATION
CLASSES
UND
SWING
.
1022
19.1.5
JAVAFX
.
1022
19.1.6
SWT
(STANDARD
WIDGET
TOOLKIT)
*
.
1024
19.2
DEKLARATIVE
UND
PROGRAMMIERTE
OBERFLAECHEN
.
1025
19.2.1
GUI-BESCHREIBUNGEN
IN
JAVAFX
.
1025
19.2.2
DEKLARATIVE
GUI-BESCHREIBUNGEN
FUER
SWING?
.
1026
19.3
GUI-BUILDER
.
1026
19.3.1
GUI-BUILDER
FUER
JAVAFX
.
1027
19.3.2
GUI-BUILDER
FUER
SWING
.
1027
19.4
MIT
DEM
ECLIPSE
WINDOWBUILDER
ZUR
ERSTEN
SWING-OBERFLAECHE
.
1027
19.4.1
WINDOWBUILDER
INSTALLIEREN
.
1028
19.4.2
MIT
WINDOWBUILDER
EINE
GUI-KLASSE
HINZUFUEGEN
.
1029
19.4.3
DAS
LAYOUTPROGRAMM
STARTEN
.
1031
19.4.4
GRAFISCHE
OBERFLAECHE
AUFBAUEN
.
1032
19.4.5
SWING-KOMPONENTEN-KLASSEN
.
1035
19.4.6
FUNKTIONALITAET
GEBEN
.
1036
19.5
GRUNDLEGENDES
ZUM
ZEICHNEN
.
1039
19.5.1
DIE
PAINT(GRAPHICS)-METHODE
FUER
DEN
AWT-FRAME
.
1040
19.5.2
DIE
EREIGNISORIENTIERTE
PROGRAMMIERUNG
AENDERT
FENSTERINHALTE
.
1041
19.5.3
ZEICHNEN
VON
INHALTEN
AUF
EINEN
JFRAME
.
1043
19.5.4
AUFFORDERN
ZUM
NEUZEICHNEN
MIT
REPAINT(.)
.
1044
19.5.5
JAVA
2D-API
.
1045
19.6
ZUM
WEITERLESEN
.
1045
20
EINFUEHRUNG
IN
DATEIEN
UND
DATENSTROEME
1047
20.1
ALTE
UND
NEUE
WELT
IN
JAVA.IO
UND
JAVA.NIO
.
1047
20.1.1
JAVA.IO-PAKET
MIT
FILE-KLASSE
.
1047
20.1.2
NIO.2
UND
DAS
JAVA.NIO-PAKET
.
1048
20.1.3
JAVA.IO.FILE
ODER
JAVA.NIO.*-TYPEN?
.
1048
20.2
DATEISYSTEME
UND
PFADE
.
1048
20.2.1
FILESYSTEM
UND
PATH
.
1049
20.2.2
DIE
UTILITY-KLASSE
FILES
.
1056
20.3
DATEIEN
MIT
WAHLFREIEM
ZUGRIFF
.
1058
20.3.1
EIN
RANDOMACCESSFILE
ZUM
LESEN
UND
SCHREIBEN
OEFFNEN
.
1059
20.3.2
AUS
DEM
RANDOMACCESSFILE
LESEN
.
1059
20.3.3
SCHREIBEN
MIT
RANDOMACCESSFILE
.
1062
20.3.4
DIE
LAENGE
DES
RANDOMACCESSFILE
.
1062
20.3.5
HIN
UND
HER
IN
DER
DATEI
.
1063
20.4
BASISKLASSEN
FUER
DIE
EIN-/AUSGABE
.
1064
20.4.1
DIE
VIER
ABSTRAKTEN
BASISKLASSEN
.
1064
20.4.2
DIE
ABSTRAKTE
BASISKLASSE
OUTPUTSTREAM
.
1065
20.4.3
DIE
ABSTRAKTE
BASISKLASSE
INPUTSTREAM
.
1067
20.4.4
DIE
ABSTRAKTE
BASISKLASSE
WRITER
.
1069
20.4.5
DIE
SCHNITTSTELLE
APPENDABLE
*
.
1070
20.4.6
DIE
ABSTRAKTE
BASISKLASSE
READER
.
1071
20.4.7
DIE
SCHNITTSTELLEN
CLOSEABLE,
AUTOCLOSEABLE
UND
FLUSHABLE
.
1074
20.5
LESEN
AUS
DATEIEN
UND
SCHREIBEN
IN
DATEIEN
.
1076
20.5.1
BYTEORIENTIERTE
DATENSTROEME
UEBER
FILES
BEZIEHEN
.
1076
20.5.2
ZEICHENORIENTIERTE
DATENSTROEME
UEBER
FILES
BEZIEHEN
.
1077
20.5.3
DIE
FUNKTION
VON
OPENOPTION
BEI
DEN
FILES.NEW*(.)-METHODEN
.
1079
20.5.4
RESSOURCEN
AUS
DEM
MODULPFAD
UND
AUS
JAR-DATEIEN
LADEN
.
1081
20.6
ZUM
WEITERLESEN
.
1082
21
EINFUEHRUNG
INS
DATENBANKMANAGEMENT
MIT
JDBC
1083
21.1
RELATIONALE
DATENBANKEN
UND
JAVA-ZUGRIFFE
.
1083
21.1.1
DAS
RELATIONALE
MODELL
.
1083
21.1.2
JAVA-APIS
ZUM
ZUGRIFF
AUF
RELATIONALE
DATENBANKEN
.
1084
21.1.3
DIEJDBC-API
UND
IMPLEMENTIERUNGEN:
JDBC-TREIBER
.
1085
21.1.4
H2
IST
DAS
WERKZEUG
AUF
DER
INSEL
.
1085
21.2
EINE
BEISPIELABFRAGE
.
1086
21.2.1
SCHRITTE
ZUR
DATENBANKABFRAGE
.
1086
21.2.2
MIT
JAVA
AUF
DIE
RELATIONALE
DATENBANK
ZUGREIFEN
.
1086
21.3
ZUM
WEITERLESEN
.
1088
22
BITS
UND
BYTES,
MATHEMATISCHES
UND
GELD
1089
22.1
BITS
UND
BYTES
.
1089
22.1.1
DIE
BIT-OPERATOREN
KOMPLEMENT,
UND,
ODER
UND
XOR
.
1090
22.1.2
REPRAESENTATION
GANZER
ZAHLEN
IN
JAVA-DAS
ZWEIERKOMPLEMENT
.
1091
22.1.3
DAS
BINAERE
(BASIS
2),
OKTALE
(BASIS
8),
HEXADEZIMALE
(BASIS
16)
STELLENWERTSYSTEM
.
1093
22.1.4
AUSWIRKUNG
DER
TYPUMWANDLUNG
AUF
DIE
BIT-MUSTER
.
1094
22.1.5
VORZEICHENLOSARBEITEN
.
1097
22.1.6
DIE
VERSCHIEBEOPERATOREN
.
1099
22.1.7
EIN
BIT
SETZEN,
LOESCHEN,
UMDREHEN
UND
TESTEN
.
1102
22.1.8
BIT-METHODEN
DER
INTEGER
UND
LONG-KLASSE
.
1102
22.2
FLIESSKOMMA-ARITHMETIK
IN
JAVA
.
1104
22.2.1
SPEZIALWERTE
FUER
UNENDLICH,
NULL,
NAN
.
1105
22.2.2
STANDARDNOTATION
UND
WISSENSCHAFTLICHE
NOTATION
BEI
FLIESSKOMMAZAHLEN*
.
1108
22.2.3
MANTISSE
UND
EXPONENT
*
.
1108
22.3
DIE
EIGENSCHAFTEN
DER
KLASSE
MATH
.
1110
22.3.1
OBJEKTVARIABLEN
DER
KLASSE
MATH
.
1110
22.3.2
ABSOLUTWERTE
UND
VORZEICHEN
.
1111
22.3.3
MAXIMUM/MINIMUM
.
1111
22.3.4
RUNDEN
VON
WERTEN
.
1112
22.3.5
REST
DER
GANZZAHLIGEN
DIVISION
*
.
1115
22.3.6
DIVISION
MIT
RUNDUNG
IN
RICHTUNG
NEGATIV
UNENDLICH,
ALTERNATIVER
RESTWERT
*
.
1116
22.3.7
MULTIPLY-ACCUMULATE
.
1117
22.3.8
WURZEL-UND
EXPONENTIALMETHODEN
.
1118
22.3.9
DER
LOGARITHMUS
*
.
1119
22.3.10
WINKELMETHODEN
*
.
1120
22.3.11
ZUFALLSZAHLEN
.
1121
22.4
GENAUIGKEIT,
WERTEBEREICH
EINES
TYPS
UND
UEBERLAUFKONTROLLE
*
.
1121
22.4.1
DER
GROESSTE
UND
DER
KLEINSTE
WERT
.
1122
22.4.2
UEBERLAUF
UND
ALLES
GANZ
EXAKT
.
1122
22.4.3
WAS
BITTE
MACHT
EINE
ULP?
.
1125
22.5
ZUFALLSZAHLEN:
RANDOM,
THREADLOCALRANDOM
UND
SECURERANDOM.
1127
22.5.1
DIE
KLASSE
RANDOM
.
1127
22.5.2
DIE
KLASSE
THREADLOCALRANDOM
.
1130
22.5.3
DIE
KLASSE
SECURERANDOM
*
.
1131
22.6
GROSSE
ZAHLEN*
.
1131
22.6.1
DIE
KLASSE
BIGINTEGER
.
1131
22.6.2
BEISPIEL:
GANZ
LANGE
FAKULTAETEN
MIT
BIGINTEGER
.
1138
22.6.3
GROSSE
FLIESSKOMMAZAHLEN
MIT
BIGDECIMAL
.
1139
22.6.4
MIT
MATHCONTEXT
KOMFORTABEL
DIE
RECHENGENAUIGKEIT
SETZEN
.
1142
22.6.5
NOCH
SCHNELLER
RECHNEN
DURCH
MUTABLE
IMPLEMENTIERUNGEN
.
1144
22.7
GELD
UND
WAEHRUNG
.
1144
22.7.1
GELDBETRAEGE
REPRAESENTIEREN
.
1144
22.7.2
ISO
4217
.
1145
22.7.3
WAEHRUNGEN
IN
JAVA
REPRAESENTIEREN
.
1145
22.8
ZUM
WEITERLESEN
.
1146
23
TESTEN
MIT
JUNIT
1147
23.1
SOFTWARETESTS
.
1147
23.1.1
VORGEHEN
BEIM
SCHREIBEN
VON
TESTFAELLEN
.
1148
23.2
DAS
TEST-FRAMEWORK
JUNIT
.
1148
23.2.1
TEST-DRIVEN
DEVELOPMENT
UND
TEST-FIRST
.
1149
23.2.2
TESTEN,
IMPLEMENTIEREN,
TESTEN,
IMPLEMENTIEREN,
TESTEN,
FREUEN
.
1150
23.2.3
JUNIT-TESTS
AUSFUEHREN
.
1152
23.2.4
ASSERT*(.)-METHODEN
DER
KLASSE
ASSERTIONS
.
1153
23.2.5
EXCEPTIONS
TESTEN
.
1156
23.2.6
GRENZEN
FUER
AUSFUEHRUNGSZEITEN
FESTLEGEN
.
1157
23.2.7
BESCHRIFTUNGEN
MIT
@DISPLAYNAME
.
1158
23.2.8
VERSCHACHTELTE
TESTS
.
1158
23.2.9
TESTS
IGNORIEREN
.
1159
23.2.10
MIT
METHODEN
DER
ASSUMPTIONS-KLASSE
TESTS
ABBRECHEN
.
1159
23.2.11
PARAMETRISIERTE
TESTS
.
1159
23.3
JAVA-ASSERTIONS-BIBLIOTHEKEN
UND
ASSERTL
.
1161
23.3.1
ASSERTL
.
1161
23.4
AUFBAU
GROESSERER
TESTFAELLE
.
1163
23.4.1
FIXTURES
.
1163
23.4.2
SAMMLUNGEN
VON
TESTKLASSEN
UND
KLASSENORGANISATION
.
1165
23.5
WIE
GUTES
DESIGN
DAS
TESTEN
ERMOEGLICHT
.
1165
23.6
DUMMY,
FAKE,
STUB
UND
MOCK
.
1167
23.7
JUNIT-ERWEITERUNGEN,
TESTZUSAETZE
.
1169
23.8
ZUM
WEITERLESEN
.
1170
24
DIE
WERKZEUGE
DES
JDK
1171
24.1
UEBERSICHT
.
1171
24.1.1
AUFBAU
UND
GEMEINSAME
SCHALTER
.
1172
24.2
JAVA-QUELLEN
UEBERSETZEN
.
1172
24.2.1
DER
JAVA-COMPILER
DES
JDK
.
1172
24.2.2
NATIVE
COMPILER
.
1173
24.3
DIE
JAVA-LAUFZEITUMGEBUNG
.
1173
24.3.1
SCHALTER
DER
JVM
.
1173
24.3.2
DER
UNTERSCHIED
ZWISCHENJAVA.EXE
UND
JAVAW.EXE
.
1176
24.4
DOKUMENTATIONSKOMMENTARE
MIT
JAVADOC
.
1176
24.4.1
EINEN
DOKUMENTATIONSKOMMENTAR
SETZEN
.
1176
24.4.2
MIT
DEM
WERKZEUG
JAVADOC
EINE
DOKUMENTATION
ERSTELLEN
.
1179
24.4.3
HTML-TAGS
IN
DOKUMENTATIONSKOMMENTAREN
*
.
1179
24.4.4
GENERIERTE
DATEIEN
.
1179
24.4.5
DOKUMENTATIONSKOMMENTARE
IM
UEBERBLICK
*
.
1180
24.4.6
JAVADOC
UND
DOCLETS
*
.
1182
24.4.7
VERALTETE
(DEPRECATED)
TYPEN
UND
EIGENSCHAFTEN
.
1182
24.4.8
JAVADOC-UEBERPRUEFUNG
MIT
DOCLINT
.
1185
24.5
DAS
ARCHIVFORMAT
JAR
.
1186
24.5.1
DAS
DIENSTPROGRAMM
JAR
BENUTZEN
.
1186
24.5.2
DAS
MANIFEST
.
1186
24.5.3
APPLIKATIONEN
IN
JAR-ARCHIVEN
STARTEN;
AUSFUEHRBARE
JAR-DATEIEN
.
1187
24.6
ZUM
WEITERLESEN
.
1188
ANHANG
1189
A
JAVA
SE-MODULE
UND
PAKETUEBERSICHT
.
1189
INDEX
.
1207 |
any_adam_object | 1 |
any_adam_object_boolean | 1 |
author | Ullenboom, Christian |
author_GND | (DE-588)123404738 |
author_facet | Ullenboom, Christian |
author_role | aut |
author_sort | Ullenboom, Christian |
author_variant | c u cu |
building | Verbundindex |
bvnumber | BV049369017 |
classification_rvk | ST 250 |
classification_tum | DAT 362 |
ctrlnum | (OCoLC)1414562614 (DE-599)DNB1303216302 |
discipline | Informatik |
discipline_str_mv | Informatik |
edition | 17., aktualisierte und überarbeitete Auflage |
format | Book |
fullrecord | <?xml version="1.0" encoding="UTF-8"?><collection xmlns="http://www.loc.gov/MARC21/slim"><record><leader>00000nam a22000008c 4500</leader><controlfield tag="001">BV049369017</controlfield><controlfield tag="003">DE-604</controlfield><controlfield tag="005">20240424</controlfield><controlfield tag="007">t|</controlfield><controlfield tag="008">231017s2024 gw a||| |||| 00||| ger d</controlfield><datafield tag="015" ind1=" " ind2=" "><subfield code="a">23,N39</subfield><subfield code="2">dnb</subfield></datafield><datafield tag="016" ind1="7" ind2=" "><subfield code="a">1303216302</subfield><subfield code="2">DE-101</subfield></datafield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">9783836295444</subfield><subfield code="c">: EUR 49.90 (DE), EUR 51.30 (AT), CHF 63.90 (freier Preis)</subfield><subfield code="9">978-3-8362-9544-4</subfield></datafield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">383629544X</subfield><subfield code="9">3-8362-9544-X</subfield></datafield><datafield tag="024" ind1="3" ind2=" "><subfield code="a">9783836295444</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(OCoLC)1414562614</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(DE-599)DNB1303216302</subfield></datafield><datafield tag="040" ind1=" " ind2=" "><subfield code="a">DE-604</subfield><subfield code="b">ger</subfield><subfield code="e">rda</subfield></datafield><datafield tag="041" ind1="0" ind2=" "><subfield code="a">ger</subfield></datafield><datafield tag="044" ind1=" " ind2=" "><subfield code="a">gw</subfield><subfield code="c">XA-DE-NW</subfield></datafield><datafield tag="049" ind1=" " ind2=" "><subfield code="a">DE-M347</subfield><subfield code="a">DE-1051</subfield><subfield code="a">DE-1102</subfield><subfield code="a">DE-1050</subfield><subfield code="a">DE-523</subfield><subfield code="a">DE-29T</subfield><subfield code="a">DE-706</subfield><subfield code="a">DE-91G</subfield><subfield code="a">DE-573</subfield><subfield code="a">DE-703</subfield><subfield code="a">DE-739</subfield><subfield code="a">DE-29</subfield><subfield code="a">DE-20</subfield><subfield code="a">DE-573n</subfield><subfield code="a">DE-526</subfield><subfield code="a">DE-83</subfield><subfield code="a">DE-522</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">ST 250</subfield><subfield code="0">(DE-625)143626:</subfield><subfield code="2">rvk</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="8">1\p</subfield><subfield code="a">004</subfield><subfield code="2">23sdnb</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">DAT 362</subfield><subfield code="2">stub</subfield></datafield><datafield tag="100" ind1="1" ind2=" "><subfield code="a">Ullenboom, Christian</subfield><subfield code="e">Verfasser</subfield><subfield code="0">(DE-588)123404738</subfield><subfield code="4">aut</subfield></datafield><datafield tag="245" ind1="1" ind2="0"><subfield code="a">Java ist auch eine Insel</subfield><subfield code="b">Einführung, Ausbildung, Paxis</subfield><subfield code="c">Christian Ullenboom</subfield></datafield><datafield tag="250" ind1=" " ind2=" "><subfield code="a">17., aktualisierte und überarbeitete Auflage</subfield></datafield><datafield tag="264" ind1=" " ind2="1"><subfield code="a">Bonn</subfield><subfield code="b">Rheinwerk Verlag</subfield><subfield code="c">2024</subfield></datafield><datafield tag="300" ind1=" " ind2=" "><subfield code="a">1223 Seiten</subfield><subfield code="b">Illustrationen</subfield><subfield code="c">24 cm x 19 cm</subfield></datafield><datafield tag="336" ind1=" " ind2=" "><subfield code="b">txt</subfield><subfield code="2">rdacontent</subfield></datafield><datafield tag="337" ind1=" " ind2=" "><subfield code="b">n</subfield><subfield code="2">rdamedia</subfield></datafield><datafield tag="338" ind1=" " ind2=" "><subfield code="b">nc</subfield><subfield code="2">rdacarrier</subfield></datafield><datafield tag="490" ind1="0" ind2=" "><subfield code="a">Rheinwerk Computing</subfield></datafield><datafield tag="500" ind1=" " ind2=" "><subfield code="a">Auf dem Cover: Programmieren mit der Java Platform, Standard Edition 21 ; Java von A bis Z: Einführung Praxis, Referenz ; Von Ausdrücken und Anweisungen zu Klassen und Objekten ; Das Standardwerk</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Java Standard Edition 21</subfield><subfield code="0">(DE-588)132762754X</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Java</subfield><subfield code="g">Programmiersprache</subfield><subfield code="0">(DE-588)4401313-9</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">Eclipse</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">NetBeans</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">IntelliJ IDEA</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">XML</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">Performanz</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">Lambda</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">JDBC</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">JDK</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">JUnit</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">Oracle</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">Objektorientiert programmieren</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">Referenz</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">Datenbanken</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">Programmierung</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">Software-Entwicklung</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">Hand-Buch Grundlagen Kurse Workshops Tutorials Training Ausbildung Studium Informatik</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">Java</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">OOP</subfield></datafield><datafield tag="689" ind1="0" ind2="0"><subfield code="a">Java</subfield><subfield code="g">Programmiersprache</subfield><subfield code="0">(DE-588)4401313-9</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2=" "><subfield code="5">DE-604</subfield></datafield><datafield tag="689" ind1="1" ind2="0"><subfield code="a">Java Standard Edition 21</subfield><subfield code="0">(DE-588)132762754X</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="1" ind2=" "><subfield code="5">DE-604</subfield></datafield><datafield tag="710" ind1="2" ind2=" "><subfield code="a">Rheinwerk Verlag</subfield><subfield code="0">(DE-588)1081738405</subfield><subfield code="4">pbl</subfield></datafield><datafield tag="856" ind1="4" ind2="2"><subfield code="m">X:MVB</subfield><subfield code="q">text/html</subfield><subfield code="u">http://deposit.dnb.de/cgi-bin/dokserv?id=d1ddecef001e44ec846f87b275d708dc&prov=M&dok_var=1&dok_ext=htm</subfield><subfield code="3">Inhaltstext</subfield></datafield><datafield tag="856" ind1="4" ind2="2"><subfield code="m">DNB Datenaustausch</subfield><subfield code="q">application/pdf</subfield><subfield code="u">http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=034629013&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA</subfield><subfield code="3">Inhaltsverzeichnis</subfield></datafield><datafield tag="883" ind1="1" ind2=" "><subfield code="8">1\p</subfield><subfield code="a">vlb</subfield><subfield code="d">20230921</subfield><subfield code="q">DE-101</subfield><subfield code="u">https://d-nb.info/provenance/plan#vlb</subfield></datafield><datafield tag="943" ind1="1" ind2=" "><subfield code="a">oai:aleph.bib-bvb.de:BVB01-034629013</subfield></datafield></record></collection> |
id | DE-604.BV049369017 |
illustrated | Illustrated |
index_date | 2024-07-03T22:53:57Z |
indexdate | 2024-12-02T17:01:15Z |
institution | BVB |
institution_GND | (DE-588)1081738405 |
isbn | 9783836295444 383629544X |
language | German |
oai_aleph_id | oai:aleph.bib-bvb.de:BVB01-034629013 |
oclc_num | 1414562614 |
open_access_boolean | |
owner | DE-M347 DE-1051 DE-1102 DE-1050 DE-523 DE-29T DE-706 DE-91G DE-BY-TUM DE-573 DE-703 DE-739 DE-29 DE-20 DE-573n DE-526 DE-83 DE-522 |
owner_facet | DE-M347 DE-1051 DE-1102 DE-1050 DE-523 DE-29T DE-706 DE-91G DE-BY-TUM DE-573 DE-703 DE-739 DE-29 DE-20 DE-573n DE-526 DE-83 DE-522 |
physical | 1223 Seiten Illustrationen 24 cm x 19 cm |
publishDate | 2024 |
publishDateSearch | 2024 |
publishDateSort | 2024 |
publisher | Rheinwerk Verlag |
record_format | marc |
series2 | Rheinwerk Computing |
spelling | Ullenboom, Christian Verfasser (DE-588)123404738 aut Java ist auch eine Insel Einführung, Ausbildung, Paxis Christian Ullenboom 17., aktualisierte und überarbeitete Auflage Bonn Rheinwerk Verlag 2024 1223 Seiten Illustrationen 24 cm x 19 cm txt rdacontent n rdamedia nc rdacarrier Rheinwerk Computing Auf dem Cover: Programmieren mit der Java Platform, Standard Edition 21 ; Java von A bis Z: Einführung Praxis, Referenz ; Von Ausdrücken und Anweisungen zu Klassen und Objekten ; Das Standardwerk Java Standard Edition 21 (DE-588)132762754X gnd rswk-swf Java Programmiersprache (DE-588)4401313-9 gnd rswk-swf Eclipse NetBeans IntelliJ IDEA XML Performanz Lambda JDBC JDK JUnit Oracle Objektorientiert programmieren Referenz Datenbanken Programmierung Software-Entwicklung Hand-Buch Grundlagen Kurse Workshops Tutorials Training Ausbildung Studium Informatik Java OOP Java Programmiersprache (DE-588)4401313-9 s DE-604 Java Standard Edition 21 (DE-588)132762754X s Rheinwerk Verlag (DE-588)1081738405 pbl X:MVB text/html http://deposit.dnb.de/cgi-bin/dokserv?id=d1ddecef001e44ec846f87b275d708dc&prov=M&dok_var=1&dok_ext=htm Inhaltstext DNB Datenaustausch application/pdf http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=034629013&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA Inhaltsverzeichnis 1\p vlb 20230921 DE-101 https://d-nb.info/provenance/plan#vlb |
spellingShingle | Ullenboom, Christian Java ist auch eine Insel Einführung, Ausbildung, Paxis Java Standard Edition 21 (DE-588)132762754X gnd Java Programmiersprache (DE-588)4401313-9 gnd |
subject_GND | (DE-588)132762754X (DE-588)4401313-9 |
title | Java ist auch eine Insel Einführung, Ausbildung, Paxis |
title_auth | Java ist auch eine Insel Einführung, Ausbildung, Paxis |
title_exact_search | Java ist auch eine Insel Einführung, Ausbildung, Paxis |
title_exact_search_txtP | Java ist auch eine Insel Einführung, Ausbildung, Paxis |
title_full | Java ist auch eine Insel Einführung, Ausbildung, Paxis Christian Ullenboom |
title_fullStr | Java ist auch eine Insel Einführung, Ausbildung, Paxis Christian Ullenboom |
title_full_unstemmed | Java ist auch eine Insel Einführung, Ausbildung, Paxis Christian Ullenboom |
title_short | Java ist auch eine Insel |
title_sort | java ist auch eine insel einfuhrung ausbildung paxis |
title_sub | Einführung, Ausbildung, Paxis |
topic | Java Standard Edition 21 (DE-588)132762754X gnd Java Programmiersprache (DE-588)4401313-9 gnd |
topic_facet | Java Standard Edition 21 Java Programmiersprache |
url | http://deposit.dnb.de/cgi-bin/dokserv?id=d1ddecef001e44ec846f87b275d708dc&prov=M&dok_var=1&dok_ext=htm http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=034629013&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |
work_keys_str_mv | AT ullenboomchristian javaistaucheineinseleinfuhrungausbildungpaxis AT rheinwerkverlag javaistaucheineinseleinfuhrungausbildungpaxis |