Einfach Java (eBook)
424 Seiten
dpunkt (Verlag)
978-3-96910-543-6 (ISBN)
Java lernen - von Anfang an wie ein Experte
- Grundlagen der Java-Programmierung leicht und verständlich
- Java interaktiv im Selbststudium
- Aufgaben und Musterlösungen, Code zum Download
Sie wollen endlich Programmieren lernen und ihre ersten Projekte umsetzen? Dazu bietet sich Java als eine der populärsten Programmiersprachen geradezu an. Dieses Buch erleichtert Ihnen den Einstieg, denn Sie werden auf Ihrer Entdeckungsreise vom Java-Experten Michael Inden begleitet. Er erklärt Ihnen die Grundlagen der Java-Programmierung leicht und verständlich. Insbesondere wird die trockene Theorie auf ein Minimum reduziert und Sie legen immer mit kleinen Beispielen los.
Eine große Rolle dabei spielt der interaktive Einstieg mithilfe der JShell. Damit können kleine Programme direkt ausprobiert werden und Erfolgserlebnisse stellen sich schnell ein. Dieses Vorgehen eignet sich ideal, um im eigenen Tempo Java im Selbststudium zu erlernen. Allmählich werden sowohl die Themen anspruchsvoller als auch die zu erstellenden Programme größer. Als Hilfsmittel lernen Sie dann den Einsatz einer Entwicklungsumgebung sowie der objektorientierten Programmierung kennen. Mit den erlernten Grundlagen können Sie sich immer zielsicherer mit eigenen Projekten beschäftigen.
Das Buch besteht aus in sich abgeschlossenen, aber aufeinander aufbauenden Kapiteln zu den wichtigen Bereichen der Programmiersprache Java. Jedes Kapitel beschreibt die für den Einstieg wichtigen Sprachelemente.
Abgerundet werden viele Kapitel mit Aufgaben und Musterlösungen, sodass das zuvor Gelernte direkt anhand neuer Problemstellungen praktiziert und das Wissen vertieft werden kann. Auch lassen sich die eigenen Fortschritte abschätzen und gegebenenfalls eine Ehrenrunde zur Vertiefung des Wissens einlegen.
Zahlreiche kurze Codebeispiele verdeutlichen die Lerninhalte und laden oftmals zum Experimentieren ein. Gleich von Anfang an lernen Sie, ihren Sourcecode sauber zu strukturieren und einen guten Stil zu verfolgen.
Dipl.-Inform. Michael Inden ist Oracle-zertifizierter Java-Entwickler. Nach seinem Studium in Oldenburg hat er bei diversen internationalen Firmen in verschiedenen Rollen etwa als Softwareentwickler, -architekt, Consultant, Teamleiter, CTO sowie Leiter Academy gearbeitet. Zurzeit ist er freiberuflich als Autor und Trainer in Zürich tätig. Michael Inden hat über zwanzig Jahre Berufserfahrung beim Entwurf komplexer Softwaresysteme gesammelt, an diversen Fortbildungen und mehreren Java-One-Konferenzen teilgenommen. Sein besonderes Interesse gilt dem Design qualitativ hochwertiger Applikationen sowie dem Coaching. Sein Wissen gibt er gerne als Trainer in internen und externen Schulungen und auf Konferenzen weiter, etwa bei der JAX/W-JAX, JAX London, Oracle Code One, ch.open sowie bei der Java User Group Switzerland.
Dipl.-Inform. Michael Inden ist Oracle-zertifizierter Java-Entwickler. Nach seinem Studium in Oldenburg hat er bei diversen internationalen Firmen in verschiedenen Rollen etwa als Softwareentwickler, -architekt, Consultant, Teamleiter, CTO sowie Leiter Academy gearbeitet. Zurzeit ist er freiberuflich als Autor und Trainer in Zürich tätig. Michael Inden hat über zwanzig Jahre Berufserfahrung beim Entwurf komplexer Softwaresysteme gesammelt, an diversen Fortbildungen und mehreren Java-One-Konferenzen teilgenommen. Sein besonderes Interesse gilt dem Design qualitativ hochwertiger Applikationen sowie dem Coaching. Sein Wissen gibt er gerne als Trainer in internen und externen Schulungen und auf Konferenzen weiter, etwa bei der JAX/W-JAX, JAX London, Oracle Code One, ch.open sowie bei der Java User Group Switzerland.
Vorwort 7
I Einstieg 23
1 Einführung 25
1.1 Java im Überblick 25
1.2 Los geht's – Installation 27
1.2.1 Java-Download 27
1.2.2 Installation des JDKs 29
1.2.3 Nacharbeiten nach der Java-Installation 29
1.2.4 Java-Installation prüfen 30
1.3 Entwicklungsumgebungen 31
1.3.1 Installation von Eclipse 32
1.3.2 Eclipse starten 34
1.3.3 Erstes Projekt in Eclipse 36
1.3.4 Erste Klasse in Eclipse 38
2 Schnelleinstieg 41
2.1 Hallo Welt (Hello World) 41
2.2 Variablen und Datentypen 42
2.2.1 Definition von Variablen 42
2.2.2 Bezeichner (Variablennamen) 45
2.3 Operatoren im Überblick 47
2.3.1 Arithmetische Operatoren 47
2.3.2 Zuweisungsoperatoren 50
2.3.3 Vergleichsoperatoren 52
2.3.4 Logische Operatoren 53
2.4 Fallunterscheidungen 54
2.5 Methoden 58
2.5.1 Methoden aus dem JDK nutzen 58
2.5.2 Eigene Methoden definieren 59
2.5.3 Nützliche Beispiele aus dem JDK 62
2.5.4 Signatur einer Methode 65
2.5.5 Fehlerbehandlung und Exceptions 66
2.6 Kommentare 66
2.7 Schleifen 67
2.7.1 Die for-Schleife 67
2.7.2 Die for-each-Schleife 68
2.7.3 Die while-Schleife 69
2.7.4 Die do-while-Schleife 70
2.8 Rekapitulation 71
2.9 Weiterführende Dokumentation für nächste Schritte 72
2.10 Aufgaben und Lösungen 73
2.10.1 Aufgabe 1: Mathematische Berechnungen 73
2.10.2 Aufgabe 2: Methode und if 73
2.10.3 Aufgabe 3: Selbstabholerrabatt 74
2.10.4 Aufgabe 4: Schleifen mit Berechnungen 75
2.10.5 Aufgabe 5: Schleifen und fixe Schrittweite 76
2.10.6 Aufgabe 6: Schleifen mit variabler Schrittweite 76
2.10.7 Aufgabe 7: Verschachtelte Schleifen – Variante 1 77
2.10.8 Aufgabe 8: Verschachtelte Schleifen – Variante 2 78
2.10.9 Aufgabe 9: Verschachtelte Schleifen – Variante 3 79
3 Strings 81
3.1 Schnelleinstieg 81
3.1.1 Gebräuchliche Stringaktionen 81
3.1.2 Suchen und Ersetzen 85
3.1.3 Informationen extrahieren und formatieren 87
3.2 Nächste Schritte 89
3.2.1 Die Klasse Scanner 90
3.2.2 Mehrzeilige Strings (Text Blocks) 93
3.2.3 Strings und char[]s 94
3.3 Praxisbeispiel: Text in Title Case wandeln 96
3.4 Aufgaben und Lösungen 98
3.4.1 Aufgabe 1: Länge, Zeichen und Enthaltensein 98
3.4.2 Aufgabe 2: Title Case mit Scanner 98
3.4.3 Aufgabe 3: Zeichen wiederholen 99
3.4.4 Aufgabe 4: Vokale raten 100
3.4.5 Aufgabe 5: String Merge 102
4 Arrays 105
4.1 Schnelleinstieg 105
4.1.1 Gebräuchliche Aktionen 105
4.1.2 Mehrdimensionale Arrays 111
4.2 Nächste Schritte 112
4.2.1 Eindimensionale Arrays 113
4.2.2 Mehrdimensionale Arrays 117
4.3 Praxisbeispiel: Flächen füllen 121
4.4 Aufgaben und Lösungen 124
4.4.1 Aufgabe 1: Durcheinanderwürfeln eines Arrays 124
4.4.2 Aufgabe 2: Arrays kombinieren 125
4.4.3 Aufgabe 3: Rotation um eine oder mehrere Positionen 126
4.4.4 Aufgabe 4: Zweidimensionales String-Array ausgeben 128
4.4.5 Aufgabe 5: Dreieckiges Array: Upside Down 129
5 Klassen und Objektorientierung 131
5.1 Schnelleinstieg 131
5.1.1 Grundlagen zu Klassen und Objekten 132
5.1.2 Eigenschaften (Attribute) 134
5.1.3 Verhalten (Methoden) 139
5.1.4 Objekte vergleichen – die Rolle von equals() 142
5.2 Nächste Schritte 145
5.2.1 Klassen ausführbar machen 145
5.2.2 Imports und Packages 148
5.2.3 Übergang zum Einsatz einer IDE 150
5.2.4 Imports und Packages: Auswirkungen auf unsere Applikation 154
5.2.5 Verstecken von Informationen 160
5.3 Vererbung 164
5.3.1 Basisklassen und abstrakte Basisklassen 165
5.3.2 Overloading und Overriding 167
5.4 Die Klasse Object 169
5.4.1 Beispielklasse Person 170
5.4.2 Die Methode toString() 171
5.4.3 Ergänzungen zur Methode equals(Object) 172
5.4.4 Typprüfung mit instanceof 172
5.4.5 Pattern Matching bei instanceof 173
5.5 Schnittstelle (Interface) und Implementierung 174
5.6 Records 176
5.7 Aufgaben und Lösungen 178
5.7.1 Aufgabe 1: Obstkorb 178
5.7.2 Aufgabe 2: Superheld 179
5.7.3 Aufgabe 3: Zähler 181
5.7.4 Aufgabe 4: Zähler mit Überlauf 183
6 Collections 187
6.1 Schnelleinstieg 187
6.1.1 Die Klasse ArrayList 187
6.1.2 Die Klasse HashSet 193
6.1.3 Iteratoren 197
6.1.4 Die Klasse HashMap 199
6.2 Nächste Schritte 203
6.2.1 Generische Typen (Generics) 203
6.2.2 Basisinterfaces für die Containerklassen 208
6.3 Praxisbeispiel: Einen Stack selbst realisieren 212
6.4 Aufgaben und Lösungen 214
6.4.1 Aufgabe 1: Tennisverein-Mitgliederliste 214
6.4.2 Aufgabe 2: Liste mit Farbnamen füllen und filtern 215
6.4.3 Aufgabe 3: Duplikate entfernen – Variante 1 215
6.4.4 Aufgabe 4: Duplikate entfernen – Variante 2 216
6.4.5 Aufgabe 5: Hauptstädte 217
6.4.6 Aufgabe 6: Häufigkeiten von Namen 217
6.4.7 Aufgabe 7: Objekte mit Maps selbst gebaut 218
6.4.8 Aufgabe 8: Listenreihenfolge umdrehen (mit Stack) 219
7 Ergänzendes Wissen 221
7.1 Sichtbarkeits- und Gültigkeitsbereiche 221
7.2 Primitive Typen und Wrapper-Klassen 223
7.2.1 Grundlagen 223
7.2.2 Casting: Typerweiterungen sowie -verkleinerungen 228
7.2.3 Konvertierung von Werten 229
7.3 Ternary-Operator (?-Operator) 232
7.4 Aufzählungen mit enum 233
7.5 Switch 235
7.6 Moderne Switch Expressions 237
7.6.1 Einführendes Beispiel 237
7.6.2 Weitere Gründe für die Neuerung 239
7.7 Pattern Matching bei Switch Expressions (Java 17 Preview) 241
7.7.1 Einführendes Beispiel 241
7.7.2 Spezialitäten 242
7.8 Break und Continue in Schleifen 244
7.8.1 Funktionsweise von break und continue in Schleifen 244
7.8.2 Wie macht man es besser? 246
7.9 Rekursion 248
7.10 Aufgaben und Lösungen 251
7.10.1 Aufgabe 1: Würfelspiel 251
7.10.2 Aufgabe 2: Prüfung auf Vokale mit switch 252
7.10.3 Aufgabe 3: Temperaturumrechnung 252
7.10.4 Aufgabe 4: Palindrom-Prüfung mit Rekursion 254
II Aufstieg 257
8 Mehr zu Klassen und Objektorientierung 259
8.1 Wissenswertes zu Vererbung 259
8.1.1 Generalisierung und Spezialisierung 259
8.1.2 Polymorphie 261
8.1.3 Sub-Classing und Sub-Typing 262
8.2 Varianten innerer Klassen 263
8.2.1 »Normale« innere Klassen 263
8.2.2 Statische innere Klassen 264
8.2.3 Methodenlokale innere Klassen 265
8.2.4 Anonyme innere Klassen 265
9 Lambdas und Streams 267
9.1 Einstieg in Lambdas 267
9.1.1 Syntax von Lambdas 267
9.1.2 Functional Interfaces und SAM-Typen 268
9.2 Methodenreferenzen 271
9.3 Externe vs. interne Iteration 272
9.3.1 Externe Iteration 273
9.3.2 Interne Iteration 273
9.3.3 Das Interface Predicate< T>
9.4 Streams im Überblick 275
9.4.1 Streams erzeugen – Create Operations 276
9.4.2 Intermediate und Terminal Operations im Überblick 277
9.4.3 Zustandslose Intermediate Operations 277
9.4.4 Zustandsbehaftete Intermediate Operations 282
9.4.5 Terminal Operations 283
9.5 Aufgaben und Lösungen 286
9.5.1 Aufgabe 1: Erwachsene aus Personenliste extrahieren 286
9.5.2 Aufgabe 2: Stream-API 287
9.5.3 Aufgabe 3: Informationen mit Stream-API extrahieren 288
9.5.4 Aufgabe 4: Häufigkeiten von Namen 289
9.5.5 Aufgabe 5: Kollektoren 289
10 Verarbeitung von Dateien 291
10.1 Schnelleinstieg 291
10.1.1 Das Interface Path und die Utility-Klasse Files 292
10.1.2 Anlegen von Dateien und Verzeichnissen 292
10.1.3 Inhalt eines Verzeichnisses auflisten 293
10.1.4 Pfad ist Datei oder Verzeichnis? 294
10.1.5 Dateiaktionen und die Utility-Klasse Files 294
10.1.6 Informationen zu Path-Objekten ermitteln 298
10.1.7 Kopieren 299
10.1.8 Umbenennen 301
10.1.9 Löschen 302
10.2 Dateibehandlung und die Klasse File 303
10.2.1 Konvertierung von Path in File und zurück 304
10.2.2 Die Klasse File im Kurzüberblick 304
10.2.3 Dateiinhalte verarbeiten und Systemressourcen 305
10.3 Praxisbeispiel: Directory-Baum darstellen 307
10.3.1 Basisvariante 308
10.3.2 Variante mit schönerer Darstellung 310
10.3.3 Finale Variante mit ausgeklügelter Darstellung 311
10.4 Aufgaben und Lösungen 313
10.4.1 Aufgabe 1: Texte in Datei schreiben und wieder lesen 313
10.4.2 Aufgabe 2: Dateigrößen 313
10.4.3 Aufgabe 3: Existenzprüfung 314
10.4.4 Aufgabe 4: Rechteprüfung 314
10.4.5 Aufgabe 5: Verzeichnisinhalt auflisten 315
11 Fehlerbehandlung mit Exceptions 317
11.1 Schnelleinstieg 317
11.1.1 Fehlerbehandlung 318
11.1.2 Exceptions selbst auslösen – throw 323
11.1.3 Eigene Exception-Typen definieren 324
11.1.4 Exceptions propagieren – throws 324
11.2 Fehlerbehandlung in der Praxis 325
11.3 Automatic Resource Management (ARM) 327
11.4 Hintergrundwissen: Checked und Unchecked Exceptions 328
12 Datumsverarbeitung 331
12.1 Schnelleinstieg 331
12.1.1 Die Aufzählungen DayOfWeek und Month 331
12.1.2 Die Klasse LocalDate 333
12.1.3 Die Klassen LocalTime und LocalDateTime 337
12.2 Nächste Schritte 339
12.2.1 Datumsarithmetik 339
12.2.2 Formatierung und Parsing 341
12.3 Praxisbeispiel: Kalenderausgabe 343
12.4 Aufgaben und Lösungen 346
12.4.1 Aufgabe 1: Wochentage 346
12.4.2 Aufgabe 2: Freitag, der 13. 347
12.4.3 Aufgabe 3: Mehrmals Freitag, der 13. 348
12.4.4 Aufgabe 4: Schaltjahre 349
III Praxisbeispiele 351
13 Praxisbeispiel: Tic Tac Toe 353
13.1 Spielfeld initialisieren und darstellen 353
13.2 Setzen der Steine 354
13.3 Prüfen auf Sieg 355
13.4 Bausteine im Einsatz 357
14 Praxisbeispiel: CSV-Highscore-Liste einlesen 359
14.1 Verarbeitung von Spielständen (Highscores) 359
14.2 Extraktion der Daten 361
14.3 Besonderheiten der Implementierung 362
15 Praxisbeispiel: Worträtsel 363
15.1 Applikationsdesign – Vorüberlegungen zur Strukturierung 364
15.2 Einlesen der verfügbaren Wörter 364
15.3 Hilfsdatenstrukturen 366
15.4 Datenmodell 366
15.4.1 Datenspeicherung und Initialisierung 366
15.4.2 Zufällige Wahl von Richtung, Position, Wort und Buchstabe 368
15.4.3 Algorithmus zum Verstecken von Wörtern 368
15.4.4 Wort prüfen und platzieren 370
15.5 HTML-Erzeugung 372
15.6 Hauptapplikation 373
15.7 Ausgabe als HTML und Darstellung im Browser 375
15.8 Fazit 376
IV Schlussgedanken 377
16 Gute Angewohnheiten 379
16.1 Grundregeln eines guten Programmierstils 379
16.2 Coding Conventions 380
16.2.1 Grundlegende Namens- und Formatierungsregeln 380
16.2.2 Namensgebung 382
16.2.3 Dokumentation 385
16.2.4 Programmdesign 385
16.2.5 Parameterlisten 386
16.2.6 Logik und Kontrollfluss 387
16.3 Sourcecode-Prüfung 388
16.4 JUnit 5: Auch ans Testen denken 390
16.4.1 Das JUnit-Framework 390
16.4.2 Schreiben und Ausführen von Tests 392
17 Schlusswort 395
V Anhang 397
A Schlüsselwörter im Überblick 399
B Schnelleinstieg JShell 403
C Grundlagen zur JVM und Infos zum Java-Ökosystem 407
C.1 Wissenswertes zur Java Virtual Machine (JVM) 407
C.1.1 Einführendes Beispiel 408
C.1.2 Ausführung eines Java-Programms 409
C.2 Das Java-Ökosystem im Kurzüberblick 410
Literaturverzeichnis 413
Index 415
Erscheint lt. Verlag | 4.9.2021 |
---|---|
Reihe/Serie | Programmieren mit dpunkt |
Programmieren mit Java | Programmieren mit Java |
Verlagsort | Heidelberg |
Sprache | deutsch |
Themenwelt | Informatik ► Programmiersprachen / -werkzeuge ► Java |
Schlagworte | Bad Smells • codereviews • Coding-Conventions • collections • Entwurfsmuster • Java 10 • Java 11 • java 13 • Java 14 • Java 15 • Java 16 • Java lernen • Java SE • JDK 9 • Jigsaw • lambdas • Modularisierung • Multithreading • Objektorientierte Programmierung • Objektorientiertes Design • Programmieren lernen • Programmierstil • Refactorings • Unit Tests |
ISBN-10 | 3-96910-543-9 / 3969105439 |
ISBN-13 | 978-3-96910-543-6 / 9783969105436 |
Haben Sie eine Frage zum Produkt? |
Größe: 18,7 MB
DRM: Digitales Wasserzeichen
Dieses eBook enthält ein digitales Wasserzeichen und ist damit für Sie personalisiert. Bei einer missbräuchlichen Weitergabe des eBooks an Dritte ist eine Rückverfolgung an die Quelle möglich.
Dateiformat: PDF (Portable Document Format)
Mit einem festen Seitenlayout eignet sich die PDF besonders für Fachbücher mit Spalten, Tabellen und Abbildungen. Eine PDF kann auf fast allen Geräten angezeigt werden, ist aber für kleine Displays (Smartphone, eReader) nur eingeschränkt geeignet.
Systemvoraussetzungen:
PC/Mac: Mit einem PC oder Mac können Sie dieses eBook lesen. Sie benötigen dafür einen PDF-Viewer - z.B. den Adobe Reader oder Adobe Digital Editions.
eReader: Dieses eBook kann mit (fast) allen eBook-Readern gelesen werden. Mit dem amazon-Kindle ist es aber nicht kompatibel.
Smartphone/Tablet: Egal ob Apple oder Android, dieses eBook können Sie lesen. Sie benötigen dafür einen PDF-Viewer - z.B. die kostenlose Adobe Digital Editions-App.
Zusätzliches Feature: Online Lesen
Dieses eBook können Sie zusätzlich zum Download auch online im Webbrowser lesen.
Buying eBooks from abroad
For tax law reasons we can sell eBooks just within Germany and Switzerland. Regrettably we cannot fulfill eBook-orders from other countries.
aus dem Bereich