Von den Grundlagen bis zu Threads und Netzen von
Prof. Dr. Ernst-Wolfgang Dieterich Fachhochschule Ulm
2., überarbeitete Auflage
Oldenbourg Verlag München Wien
1 E i n l e i t u n g . • . . . . . 1 2 J a v a - E n t w i c k l u n g s u m g e b u n g . . . . . . . . . . . . 5 2 . 1 J D K v o n S u n M i c r o s y s t e m s . . . . 5 2 . 2 D a s W e r k z e u g j a v a d b c . . ; . . 6 3 . E r s t e E i n d r ü c k e v o n J a v a 1 1 3.1 E i n e J a v a - A n w e n d u n g 1 1 3.2 E i n G r a f i k p r o g r a m m . . . . . . . . . • , . . . . . 1 3 3.3 E i n J a v a - A p p l e t 1 4 Teil I. Grundlagen 17 4 Primitive Datentypen und Variablen 19 4.1 GanzeZahlen 19 , 4 . 2 ReelleZahlen . . . \. 22
; . 4.3 Wahrheitswerte . . . . - , . ' 2 4 4.4 Zeichen und Zeichenreihen 24 4.5 Eine einfache Klasse. - 27 4.6 Variablen und Variablendeklarationen. . 27 4.7 Benannte Konstanten . . 31 5 Ausdrücke . 3 3 5.1 Die Priorität von Operatoren . . . . . . 33 5.2 Interne Typkonvertierung , . . . 35 5.3 Arithmetische Operatoren . . . . . . . , . . . 36 5.4 Bitoperatoren 38 5.4.1 Die Schiebeoperatoren. 38 5.4.2 Die logischen und bitweisen Operatoren . . 40 5.5 Vergleiche 45 5.6 Der bedingte Ausdruck . . 46 5.7 Explizite Typkonvertierung , . . . 46 5.8 Die Zuweisung 49 5.9 Konstantenausdrücke ., . . . . . . 52 5.10 Zusammenfassung . . . . -. 53 6 Anweisungen 59 6.1 Ausdrucksanweisung und Block . , .., . . . 60 6.2 Die bedingte Anweisung 62
Inhaltsverzeichnis
6.3 Die Fallunterscheidung 64 6.4 Schleifen 68 6.4.1 Die while-Schleife 68 6.4.2 Die do-while-Schleife '.. . . . . . 69 6.4.3 Die f or-Schleife 70 6.5 Strukturierte Sprunganweisungen . 73
Teil I I . O b j e k t o r i e n t i e r t e s P r o g r a m m i e r e n i n J a v a . 7 7 7 K l a s s e n u n d O b j e k t e 7 9 7.1 D i e B e g r i f f e K l a s s e u n d O b j e k t . . . 79 7.2 D e f i n i t i o n v o n K l a s s e n . . . . ; . . . 8 0 7.2.1 A t t r i b u t e 8 1 7.2.2 M e t h o d e n . 82 7.3 O b j e k t v a r i a b l e n u n d O b j e k t e 8 5 7.3.1 E r z e u g u n g e i n e s O b j e k t s 8 5 7.3.2 Z u g r i f f a u f A t t r i b u t e u n d M e t h o d e n 8 7 7.4 K o n s t r u k t o r ' . . . 9 2 ' 7 . 5 E i n e e i n f a c h e J a v a - K l a s s e , d i e K l a s s e P u n k t . . . . . " . . . 9 4 7 . 6 Ü b e r l a d e n v o n M e t h o d e n . . . . . : . . . 9 5 -7.7 P a r a m e t e r ü b e r g a b e - M e c h a n i s m e n . 101 7.8 D a s S c h l ü s s e l w o r t t h i s 105 7.9 K l a s s e n - u n d I n s t a n z e n a t t r i b u t e . 108 7.1 K l a s s e n m e t h o d e n '- ;-• 110 7.11 S t a t i s c h e I n i t i a l i s i e r e r . . . : . . . . . •; . . . 112 7 . 1 2 F i n a n z i e r u n g e i n e s O b j e k t s . . . ' . ' . ' . ' . . 1 1 3 8 P a c k a g e s . . • . . . • . . . . 1 1 5 8.1 D e f i n i t i o n v o n P a c k a g e s . . . '. . : . . . . ;. .' .1 . . 115 8.2 I m p o r t i e r e n v o n P a c k a g e s . . . . -:' . . . • • 1 1 6 8.3 D i e w i c h t i g s t e n S t a n d a r d - P a c k a g e s v o n J a v a . . . / 1 1 9 9 V e r e r b u n g . 121 9.1 K o m p o s i t i o n v o n K l a s s e n ("hat e i n " ) . . . . 121 9.2 E r w e i t e r n e i n e r K l a s s e ("ist e i n " ) . . . . i . . . 1 2 3 9.3 D a s S c h l ü s s e l w o r t s u p e r . . . . . . . . . . 1 2 5 9.4 Z u w e i s u n g s k o m p a t i b i l i t ä t . . . 1 2 6 9.5 A b s t r a k t e K l a s s e n . . . . . . . . . . . . . 128 9.6 Z u g r i f f s r e c h t e . . . . : . . . ' . . . ' 1 3 0 9.6.1 D e r M o d i f i z i e r e r p u b l i c .. . . '. ! . . . 130 9.6.2 D e r M o d i f i z i e r e r p r i v a t e . . . '. . . . .; ; . . : . . . . 1 3 1 9 . 6 . 3 K e i n M o d i f i z i e r e r . . . . : . . 1 3 2 9 . 6 . 4 D e r M o d i f i z i e r e r p r o t e c t e d . .'. . . . . . 1 3 2 9.6.5 Z u s a m m e n f a s s u n g . . . ' . 1 3 2
VI
9.7 Der Modifizierer f i n a l ..:•. •'..:. . . . . 133 ' 9.8 Interface . . . ' 133 10 Strings und Felder . 139 10.1 Die Klassen St r i n g 139 10.2 Die Klasse S t r i n g B u f f e r . . . 146 10.3. Felder . 151 10.3.1 Eindimensionale Felder 152 10.3.2 Kommandozeilen-Parameter 156 10.3.3 Rechteckige mehrdimensionale Felder 157 10.3.4 Nichtrrechteckige mehrdimensionale Felder 158 10.4 Die Klasse V e c t o r 160 11 Wichtige Java-Klassen 171 11.1 Wrapper-Klassen 171 11.2 Klassen für große Zahlen 181 11.3 Die Java-Klasse C l a s s 190 12 Ausnahmebehandlung 197 12.1 Einfache Ausnahmebehandlung 197 12.2! Hierarchie von Ausnahmeklassen . . . 200 12.2.1 Beispiel einer eigenen Ausnahmeklasse . . 200
"12.2.2 Die Hierarchie der Ausnahmeklassen in Java 202 '. 12.3 Der f i n a l l y - B l o c k 206 12.4 Das Prinzip der Ausnahmebehandlung .. . . 210 Teil III. A n w e n d u n g s p r o g r a m m e in J a v a 213 13 Grundlagen der Grafikprogrammierung 215 13.1 Aufbau eines Grafikprogrammes 215 13.2 Eigenschaften eines Rahmens 220 13.3 Figuren und Farben , . . . 221 13.4 Texte und Schriften 230 14 Applets ... 237 14.1 Ein einfaches Applet und seine Umgebung . . . . 237 14.2 Initialisierung und Finalisierung. . . x. . . . 239 14.3 Parameterübergabe a n Applets . . . . . . 241 15 Grafische Benutzeroberflächen und Ereignisbehandlung . . . .... 245 15.1 Das Prinzip der GUI-Programmierung •• • • -; 245 . 1 5 . 2 Die Komponenten der GUI und ihre Ereignisse. . . . . 249 15.2.1 Schaltfläche ( J B u t t o n ) . . . ... - . . . ' . . 251 15.2.2 Markierungsfeld ( J C h e c k B o x und J R a d i o B u t t o n ) . 254 15.2.3 Combobox ( J C p m b o B o x ) . . . ; . . . . . . : • . . ... 258 15.2.4 Auswahllisten ( J L i s t ) . ,••;••:• •-• • • • 259
vu
Inhaltsverzeichnis
15.2.5 Texte (JLabel, J T e x t F i e l d , JTextArea.,
J S c r o l l P a n e ) 262 15.3 Layouts 267 15.3.1 BorderLayout 268 15.3.2 FlowLayout 269 15.3.3 GridLayout . 271 15.3.4 GridBagLayout 273 15.3.5 CardLayout 278 15.4 Menüs 282 15.5 Dialogfenster 288 15.5.1 Dialogfenster ( J D i a l o g ) . 2£8 15.5.2 Dateifenster ( F i l e D i a l o g und J F i l e C h o o s e r ) . . 291 15.6 Die Maus-Behandlung 298 16 Threads 303 16.1 Bedienung eines laufenden Programms 303 16.2 Das Interface R u n n a b l e 308 16.3 Ein Programm mit mehreren Threads . . . . . . . . 310 16.4 Kommunikation von Threads 314 16.5 Eigenschaften von Threads. . :. . . 318 16.5. l D i e wichtigsten Methoden für Threads 318 16.5.2 Die Zustandsübergänge von Threads . 320 16.6 Prioritäten von Threads : . . . 323 16.7 Thread-Gruppen 325 16.8 Dämonen i" 329 16.9 Deadlock 331 17 Ein-/Ausgabe 333 17.1 Ströme 333 17.2 Die Klassen von j a v a . i o 335 17.2.1 R e a d e r und W r i t e r .; .••> 335 17.2.2 I n p u t S t r e a m u n d O u t p u t s t r e a m . . . ' . ' : . • 3 3 6 17.3 K o p i e r e n v o n D a t e i e n . . . 3 3 8 17.4 D a t e i e n - d i e K l a s s e F i l e • . . . . . . ' . . ; • : . 3 4 2 17.5 E i n e L i s t e v o n D a t e i e n e i n l e s e n . . . . • . 3 5 4 17.6 A n a l y s e d e s D a t e i - I n h a l t s : . . *. . 3 5 6 1 7 . 7 F i l t e r . . . : . . . 3 5 9 17.7.1 F i l t e r für R e a d e r u n d W r i t e r . . . ! . . . ; 3 5 9 1 7 . 7 . 2 Filter für I n p u t S t r e a m und O u t p u t s t r e a m . . . . 364 17.8 Beliebiger Zugriff auf Dateien (Random-Access-Dateien) . . 368 17.9 Ein-/Ausgabe beliebiger Objekte . . . .' . . . 373 17.10 Datenaustausch zwischen Programmen: Pipes . . . . 381 18 Netzwerk 387
vin
18.1 Grundlagen der Netzwerk-Programmierung 387 18.2 Die Klasse URL 388 18.2.1 Aufbau einer URL 388 18.2.2 Verbindung mit einer URL 392 18.3 Sockets 393 18.4 Client und Server: Die Kommunikation über das Netz . . . . 395 18.5 Datagramme 402 18.6 Sicherheitskonzepte in Java 405 Teil IV. Anhänge 409 A Die Syntax von Java 411 A.l Erklärung zu den Syntaxdiagrammen 411 A.2 Die Syntaxdiagramme von Java 411 B Beispiele 415 C Das Package J a v a P a c k 421 C.l Die Klasse E i n l e s e n 421 C.2 Die Klasse A u s g e b e n 423 D Qüellenverzeichnis . . . 425 E Sachwortverzeichnis 427
ix