Java 6 master class - Einstieg für Anspruchsvolle
von: Karsten Samaschke
Addison-Wesley Verlag, 2007
ISBN: 9783827324023
Sprache: Deutsch
530 Seiten, Download: 5415 KB
Format: PDF, auch als Online-Lesen
Inhaltsverzeichnis | 6 | ||
Vorwort | 16 | ||
Danke | 16 | ||
1 Einleitung | 18 | ||
1.1 Geschichte von Java | 18 | ||
1.2 Was ist Java? | 19 | ||
1.3 Java SE Version 6 | 21 | ||
1.4 Download und Installation | 21 | ||
1.5 Entwicklungsumgebung | 21 | ||
1.5.1 IntelliJ IDEA | 22 | ||
1.5.2 Eclipse | 22 | ||
1.5.3 NetBeans | 22 | ||
1.5.4 Texteditoren | 22 | ||
1.6 Java-Tools | 22 | ||
1.6.1 java | 23 | ||
1.6.2 javac | 23 | ||
1.6.3 Appletviewer | 24 | ||
1.6.4 javadoc | 24 | ||
1.6.5 jar | 25 | ||
1.6.6 jdb | 26 | ||
1.7 Fazit | 26 | ||
2 Java? Java! | 28 | ||
2.1 Anweisungen | 28 | ||
2.2 Variablen | 29 | ||
2.2.1 Variablen deklarieren | 30 | ||
2.2.2 Konventionen | 30 | ||
2.2.3 Mehrere Variablen vom gleichen Typ deklarieren | 31 | ||
2.2.4 Zuweisen von initialen Werten | 31 | ||
2.2.5 Lebensdauer und Sichtbarkeit von Variablen | 31 | ||
2.3 Datentypen | 32 | ||
2.3.1 Datentypobjekte | 33 | ||
2.3.2 valueOf-Zuweisungen | 33 | ||
2.3.3 Typkonvertierung | 34 | ||
2.4 Konstanten und konstante Variablen | 35 | ||
2.5 Kommentare | 35 | ||
2.6 Ausdrücke und Operatoren | 36 | ||
2.6.1 Arithmetische Operatoren | 37 | ||
2.6.2 Relationale Operatoren | 37 | ||
2.6.3 Logische Operatoren | 38 | ||
2.6.4 Weitere Operatoren | 39 | ||
2.6.5 Operator-Vorrangregeln | 39 | ||
2.7 Bedingungen und Verzweigungen | 40 | ||
2.7.1 | 40 | ||
2.7.2 Switch-Anweisung | 41 | ||
2.8 Schleifen | 43 | ||
2.8.1 for-Schleife | 43 | ||
2.8.2 for-each-Schleife | 44 | ||
2.8.3 while-Schleife | 45 | ||
2.8.4 do-while-Schleife | 45 | ||
2.8.5 break und continue | 46 | ||
2.9 Methodendeklaration | 48 | ||
2.9.1 Aufruf einer Methode | 49 | ||
2.9.2 Parameter: by-reference oder by-value | 49 | ||
2.10 Fazit | 50 | ||
3 Objektorientierte Programmierung | 52 | ||
3.1 Klassen und Objektinstanzen | 53 | ||
3.1.1 Abstraktion | 53 | ||
3.1.2 Kapselung | 54 | ||
3.1.3 Wiederverwendbarkeit | 55 | ||
3.2 Beziehungen zwischen Klassen | 55 | ||
3.2.1 Spezialisierung | 55 | ||
3.2.2 Komposition und Aggregation | 57 | ||
3.2.3 Assoziation | 57 | ||
3.3 Polymorphie | 57 | ||
3.4 Definition von Klassen | 59 | ||
3.4.1 Eigenschaften/Instanzvariablen | 59 | ||
3.4.2 Getter und Setter | 60 | ||
3.5 Erzeugen von Objektinstanzen | 64 | ||
3.5.1 Instanz einer inneren Klasse erzeugen | 64 | ||
3.6 Qualifizierung: Zugriff auf Methoden | 65 | ||
3.7 Konstruktoren und Destruktoren | 65 | ||
3.7.1 Konstruktor | 66 | ||
3.7.2 Destruktor | 67 | ||
3.8 Methodenüberladung | 67 | ||
3.8.1 Konstruktorkaskadierung | 70 | ||
3.8.2 Variable Argumente (VarArgs) | 71 | ||
3.9 Zugriffsmodifizierer | 73 | ||
3.9.1 Standardmodifizierer | 74 | ||
3.9.2 public | 74 | ||
3.9.3 protected | 74 | ||
3.9.4 private | 75 | ||
3.10 Statische Methoden und Variablen | 76 | ||
3.11 Finale Klassen, Methoden und Variablen | 78 | ||
3.12 Vererbung | 79 | ||
3.12.1 Ableitung von einer Basisklasse | 79 | ||
3.12.2 Polymorphie im Einsatz | 80 | ||
3.12.3 Factory-Entwurfsmuster | 82 | ||
3.13 Abstrakte Klassen und Methoden | 85 | ||
3.13.1 Deklaration einer abstrakten Klasse | 86 | ||
3.13.2 Implementieren der abstrakten Klasse | 86 | ||
3.13.3 Überschreiben und Implementieren von Methoden einer abstrakten Klasse | 87 | ||
3.13.4 Definition abstrakter Methoden | 88 | ||
3.14 Interfaces | 89 | ||
3.14.1 Ein Interface definieren | 90 | ||
3.14.2 Implementieren eines Interface | 91 | ||
3.14.3 Mehrere Interfaces implementieren | 92 | ||
3.14.4 Interface-Ableitung | 95 | ||
3.15 Lokale und anonyme Klassen | 98 | ||
3.15.1 Lokale Klassen in Methoden | 101 | ||
3.15.2 Anonyme Klassen | 102 | ||
3.16 Aufzählungen | 104 | ||
3.16.1 Eindeutig und typsicher | 105 | ||
3.16.2 Enumerations-Member durchlaufen | 106 | ||
3.17 Pakete | 107 | ||
3.17.1 Pakete definieren | 108 | ||
3.17.2 Pakete verwenden | 108 | ||
3.17.3 Das import-Statement | 109 | ||
3.17.4 Das import-Statement mit Platzhaltern | 109 | ||
3.17.5 Namensraumkonflikte | 110 | ||
3.18 Zusammenfassung | 111 | ||
4 Listen | 112 | ||
4.1 Array | 112 | ||
4.1.1 Deklaration | 112 | ||
4.1.2 Instanzierung | 113 | ||
4.1.3 Zuweisung und Abruf von Werten | 113 | ||
4.1.4 Mehrdimensionale Arrays | 115 | ||
4.1.5 Vor- und Nachteile | 116 | ||
4.2 ArrayList | 116 | ||
4.2.1 Deklaration und Instanzierung | 117 | ||
4.2.2 Zuweisen von Werten | 118 | ||
4.2.3 Abrufen von Werten | 120 | ||
4.2.4 Ersetzen von Werten | 123 | ||
4.2.5 Löschen von Werten | 124 | ||
4.2.6 Überprüfen, ob ein Element in der Liste existiert | 124 | ||
4.2.7 Vor- und Nachteile der ArrayList | 125 | ||
4.3 HashMap | 125 | ||
4.3.1 Deklaration und Instanzierung | 125 | ||
4.3.2 HashMap und Generics | 126 | ||
4.3.3 Werte zuweisen | 126 | ||
4.3.4 Abrufen von Werten | 128 | ||
4.3.5 Abrufen aller Elemente einer HashMap | 129 | ||
4.3.6 Löschen von Elementen | 131 | ||
4.3.7 Überprüfen, ob bestimmte Schlüssel oder Werte in der Liste existieren | 132 | ||
4.4 Properties | 136 | ||
4.4.1 Deklaration und Instanzierung | 136 | ||
4.4.2 Zuweisen und Abrufen von Werten | 136 | ||
4.4.3 Speichern der Werte in Textdateien | 138 | ||
4.4.4 Speichern der Werte in XML-Dateien | 139 | ||
4.4.5 Laden der Werte aus Textdateien | 140 | ||
4.4.6 Laden der Werte aus XML-Dateien | 141 | ||
4.4.7 Vor- und Nachteile der Properties-Klasse | 142 | ||
4.5 Weitere Listen | 143 | ||
4.5.1 HashSet | 143 | ||
4.5.2 TreeSet | 143 | ||
4.5.3 LinkedList | 143 | ||
4.5.4 TreeMap | 143 | ||
4.5.5 LinkedHashMap | 143 | ||
4.5.6 Vector | 143 | ||
4.6 Wichtige Interfaces | 144 | ||
4.6.1 Enumeration | 144 | ||
4.6.2 Iterator | 145 | ||
4.6.3 Collection | 146 | ||
4.6.4 Map | 148 | ||
4.6.5 List | 149 | ||
4.6.6 Set | 150 | ||
4.7 Generics | 152 | ||
4.7.1 Was sind Generics? | 152 | ||
4.7.2 Was bringen Generics? | 152 | ||
4.7.3 Wie werden die Datentypen angegeben? | 152 | ||
4.7.4 Müssen Generics zwingend deklariert werden? | 153 | ||
4.7.5 Generics in eigenen Klassen und Methoden verwenden | 153 | ||
4.7.6 Generische Typen einschränken | 154 | ||
4.7.7 Generics und Performance | 156 | ||
4.8 Zusammenfassung | 156 | ||
5 Ausnahmen | 158 | ||
5.1 Ausnahmen werfen | 158 | ||
5.2 Ausnahmen abfangen | 160 | ||
5.2.1 Mehrere Ausnahmen behandeln | 161 | ||
5.2.2 Alle Ausnahmen auf einen Schlag abfangen | 163 | ||
5.2.3 Das finally-Schlüsselwort | 163 | ||
5.3 Eigene Ausnahmen definieren | 165 | ||
5.4 Strategien beim Einsatz von Ausnahmen | 168 | ||
5.4.1 Behandeln Sie Ausnahmen so lokal wie möglich | 168 | ||
5.4.2 Behandeln Sie nur Ausnahmen, für die Sie zuständig sind | 169 | ||
5.4.3 Verwenden Sie spezifische Ausnahmetypen | 169 | ||
5.5 Fazit | 169 | ||
6 Threads | 172 | ||
6.1 Einen Thread erstellen | 172 | ||
6.1.1 Eine threadingfähige Klasse | 172 | ||
6.1.2 Einen Thread starten | 174 | ||
6.2 Timer statt Thread | 175 | ||
6.3 Priorität von Threads setzen | 178 | ||
6.4 Threads beenden | 180 | ||
6.4.1 Verwendung von interrupt() zum Abbrechen eines Thread | 180 | ||
6.4.2 Verwendung einer eigenen Thread-Ableitung | 181 | ||
6.4.3 StoppableThread statt Thread als Super- Klasse | 182 | ||
6.5 Zugriff auf den aktuellen Thread | 184 | ||
6.6 Ermitteln aller laufenden Threads | 184 | ||
6.7 Organisation von Threads in Thread- Gruppen | 186 | ||
6.8 Synchronisierung von Threads | 189 | ||
6.8.1 Monitor | 190 | ||
6.8.2 wait() und notify() | 194 | ||
6.9 Fazit | 198 | ||
7 Prozesse und Systemumgebung | 200 | ||
7.1 Starten einer externen Applikation | 200 | ||
7.2 Einlesen der Rückgabe eines Prozesses | 202 | ||
7.3 Freien Speicher ermitteln | 205 | ||
7.3.1 Initialen Arbeitsspeicher festlegen | 206 | ||
7.4 Garbage Collector erzwingen | 207 | ||
7.5 Umgebungsinformationen abrufen | 208 | ||
7.6 Betriebssystem und Java-Version bestimmen | 210 | ||
7.7 Informationen zum aktuellen Nutzer ermitteln | 211 | ||
7.8 Zugesicherte Umgebungsvariablen | 212 | ||
7.9 System-Umgebungsinformationen abrufen | 213 | ||
7.10 Zusammenfassung | 215 | ||
8 Arbeiten mit der Kommandozeile | 216 | ||
8.1 Aufbau einer Kommandozeilenapplikation | 216 | ||
8.2 Parameter einlesen | 218 | ||
8.2.1 Feste Parameterfolge mit Standardwerten | 219 | ||
8.2.2 | 223 | ||
8.2.3 Benannte Parameter | 226 | ||
8.2.4 Welcher Parametertyp für welchen Zweck? | 232 | ||
8.2.5 Das CLI-Paket der Apache Foundation | 232 | ||
8.2.6 Commons-cli oder eigene benannte Parameter? | 240 | ||
8.3 Einlesen von Informationen | 240 | ||
8.4 Ausgabe von Informationen | 245 | ||
8.4.1 Einfache Ausgabe | 245 | ||
8.4.2 Überschreiben der Methode toString() | 245 | ||
8.4.3 Sichere Ausgabe von Zeilenumbrüchen | 246 | ||
8.4.4 Umleiten der Ausgabe in eine Datei | 248 | ||
8.5 Zusammenfassung | 249 | ||
9 Swing | 252 | ||
9.1 Was ist Swing? | 252 | ||
9.2 Swing oder JFC? | 253 | ||
9.3 Swing-Basics | 253 | ||
9.3.1 Komponenten | 253 | ||
9.3.2 Root-Container | 253 | ||
9.3.3 Verwendung von JFrame | 254 | ||
9.3.4 Basisklasse für alle folgenden Beispiele | 260 | ||
9.4 Mehrzweck-Container | 261 | ||
9.4.1 JPanel | 261 | ||
9.4.2 JScrollPane | 262 | ||
9.4.3 JSplitPane | 264 | ||
9.4.4 JTabbedPane | 267 | ||
9.4.5 JToolBar | 268 | ||
9.5 Komponenten | 270 | ||
9.5.1 JLabel | 270 | ||
9.5.2 JButton | 273 | ||
9.5.3 JCheckBox | 282 | ||
9.5.4 JRadioButton | 286 | ||
9.5.5 JComboBox | 290 | ||
9.5.6 JTextField | 295 | ||
9.5.7 JPasswordField | 303 | ||
9.5.8 JFormattedTextField | 304 | ||
9.5.9 JTextArea | 310 | ||
9.5.10 JEditorPane | 314 | ||
9.5.11 JFileChooser | 319 | ||
9.5.12 JSlider | 323 | ||
9.5.13 JProgressBar | 326 | ||
9.6 Menüs mit JMenu | 329 | ||
9.6.1 Erzeugen von Menüs | 330 | ||
9.6.2 Beenden einer Swing-Applikation | 333 | ||
9.6.3 Anzeigen anderer Menüelemente | 334 | ||
9.6.4 CheckBoxen in Menüs verwenden | 336 | ||
9.6.5 JPopupMenu | 338 | ||
9.7 Layout-Manager | 343 | ||
9.7.1 FlowLayout | 343 | ||
9.7.2 GridLayout | 344 | ||
9.7.3 BorderLayout | 344 | ||
9.7.4 GridBagLayout | 346 | ||
9.8 Standarddialoge | 350 | ||
9.8.1 Message-Dialog | 350 | ||
9.8.2 Confirm-Dialog | 352 | ||
9.8.3 Input-Dialog | 354 | ||
9.8.4 Schließverhalten von Input-Dialogen beeinflussen | 356 | ||
9.9 Fazit | 359 | ||
10 Applets | 362 | ||
10.1 Ein einfaches Applet | 362 | ||
10.1.1 Anzeigen eines Applet über den Browser | 363 | ||
10.1.2 Anzeige eines Applet per Applet-Viewer | 364 | ||
10.2 Lebenszyklus eines Applet | 365 | ||
10.2.1 init() | 365 | ||
10.2.2 start() | 366 | ||
10.2.3 stop() | 366 | ||
10.2.4 destroy() | 366 | ||
10.3 Elemente des Benutzer-Interface | 366 | ||
10.3.1 java.awt.Button | 367 | ||
10.3.2 java.awt.CheckBox | 368 | ||
10.3.3 java.awt.TextArea | 370 | ||
10.3.4 java.awt.TextField | 372 | ||
10.3.5 Menu | 374 | ||
10.3.6 java.awt.List | 378 | ||
10.3.7 java.awt.Choice | 381 | ||
10.3.8 Komponenten, LayoutManager, Applets ...? | 383 | ||
10.4 paint() und update() – Grafik mit dem AWT | 383 | ||
10.4.1 Grafische Elemente zeichnen | 383 | ||
10.4.2 Text direkt ausgeben | 386 | ||
10.4.3 Bilder laden | 389 | ||
10.5 Threading | 390 | ||
10.6 Was Applets dürfen und was nicht | 394 | ||
10.7 Interaktion mit umgebenden Elementen | 395 | ||
10.7.1 Übergabe von Parametern an das Applet | 395 | ||
10.7.2 Das | 398 | ||
10.7.3 Beeinflussung des Statustextes des Fensters | 399 | ||
10.7.4 Kommunikation mit anderen Applets in derselben Seite | 400 | ||
10.7.5 Redirects im Browser | 404 | ||
10.8 Applet – JApplet? | 406 | ||
10.9 Fazit | 407 | ||
11 Streams und Dateibehandlung | 408 | ||
11.1 Streams und zugrunde liegende Prinzipien | 408 | ||
11.1.1 Byte-Streams | 409 | ||
11.1.2 Character-Streams | 411 | ||
11.1.3 Character- oder Byte-Streams? | 413 | ||
11.1.4 Brückenklassen | 413 | ||
11.2 Input- und OutputStreams | 414 | ||
11.2.1 ByteArrayInputStream und ByteArrayOutputStream | 415 | ||
11.2.2 FileInputStream und FileOutputStream | 415 | ||
11.2.3 FilterInputStream und FilterOutputStream | 418 | ||
11.2.4 BufferedInputStream und BufferedOutputStream | 418 | ||
11.2.5 DataInputStream und DataOutputStream | 419 | ||
11.2.6 PrintStream | 424 | ||
11.3 Writer und Reader | 425 | ||
11.3.1 FileReader und FileWriter | 426 | ||
11.3.2 BufferedReader und BufferedWriter | 428 | ||
11.4 RandomAccessFile | 431 | ||
11.5 File | 438 | ||
11.5.1 Pfadbestandteile ermitteln | 439 | ||
11.5.2 Detaillierte Informationen über die File- Instanz | 440 | ||
11.5.3 Dateiaktionen | 440 | ||
11.5.4 Verzeichnisaktionen | 441 | ||
11.6 Fazit | 443 | ||
12 JDBC | 446 | ||
12.1 Das JDBC-Prinzip | 446 | ||
12.2 MySQL, PostGre-SQL, Cloudscape, Oracle ...? | 447 | ||
12.2.1 MySQL, der JDBC-Treiber und die Admin- Werkzeuge | 448 | ||
12.3 Verbindung herstellen | 452 | ||
12.3.1 Treiber laden | 452 | ||
12.3.2 Verbindungsparameter übergeben | 452 | ||
12.4 Datenbankabfragen | 453 | ||
12.4.1 Daten einfügen oder ändern | 454 | ||
12.4.2 Abrufen von Daten | 456 | ||
12.5 PreparedStatement | 459 | ||
12.5.1 Datensätze einfügen, ändern oder löschen | 460 | ||
12.5.2 Abrufen von Daten | 462 | ||
12.6 Tipps und Tricks | 463 | ||
12.6.1 Sichern Sie Ihre Datenbank! | 463 | ||
12.6.2 Verwenden Sie PreparedStatements! | 464 | ||
12.6.3 Geben Sie bei SELECT-Statements immer alle Spalten an! | 464 | ||
12.6.4 Kapseln Sie Datenbankzugriffe in Datenklassen | 465 | ||
12.6.5 Auslagerung der ConnectionStrings und der Klassennamen | 473 | ||
12.7 Hibernate und O/R-Mapping- Mechanismen verwenden | 474 | ||
12.7.1 Hibernate | 475 | ||
12.7.2 Installation von Hibernate | 476 | ||
12.7.3 Mappings | 476 | ||
12.7.4 Konfiguration | 479 | ||
12.7.5 Konfigurationsdatei für MySQL | 479 | ||
12.7.6 Arbeiten mit Hibernate | 481 | ||
12.7.7 HibernateUtil-Hilfsklasse | 482 | ||
12.7.8 Implementieren des GuestbookDAO | 483 | ||
12.7.9 Änderung der GuestbookDAOFactory- Klasse | 485 | ||
12.8 Fazit | 485 | ||
13 Netzwerk | 488 | ||
13.1 Auflösung eines Hostnamens | 488 | ||
13.2 Netzwerkadapter auflisten | 490 | ||
13.3 URL | 491 | ||
13.3.1 Analyse eines URL | 493 | ||
13.3.2 Verarbeitung des referenzierten Inhalts | 494 | ||
13.3.3 URLConnection | 497 | ||
13.4 Client/Server-Kommunikation | 498 | ||
13.4.1 Sockets | 498 | ||
13.5 E-Mails senden | 505 | ||
13.5.1 Was ist Java Mail? | 505 | ||
13.5.2 Installation von Java Mail | 506 | ||
13.5.3 Versenden von E-Mails | 506 | ||
13.6 Fazit | 510 | ||
J2SE Software License | 512 | ||
Stichwortverzeichnis | 518 | ||
Mehr eBooks bei www.ciando.com | 0 |