Inden | Einfach Java | E-Book | sack.de
E-Book

E-Book, Deutsch, 424 Seiten

Reihe: Programmieren mit Java

Inden Einfach Java

Gleich richtig programmieren lernen

E-Book, Deutsch, 424 Seiten

Reihe: Programmieren mit Java

ISBN: 978-3-96910-543-6
Verlag: dpunkt
Format: PDF
Kopierschutz: 1 - PDF Watermark



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.
Inden Einfach Java jetzt bestellen!

Autoren/Hrsg.


Weitere Infos & Material


1;Vorwort;7
2;I Einstieg;23
2.1;1 Einführung;25
2.1.1;1.1 Java im Überblick;25
2.1.2;1.2 Los geht's – Installation;27
2.1.2.1;1.2.1 Java-Download;27
2.1.2.2;1.2.2 Installation des JDKs;29
2.1.2.3;1.2.3 Nacharbeiten nach der Java-Installation;29
2.1.2.4;1.2.4 Java-Installation prüfen;30
2.1.3;1.3 Entwicklungsumgebungen;31
2.1.3.1;1.3.1 Installation von Eclipse;32
2.1.3.2;1.3.2 Eclipse starten;34
2.1.3.3;1.3.3 Erstes Projekt in Eclipse;36
2.1.3.4;1.3.4 Erste Klasse in Eclipse;38
2.2;2 Schnelleinstieg;41
2.2.1;2.1 Hallo Welt (Hello World);41
2.2.2;2.2 Variablen und Datentypen;42
2.2.2.1;2.2.1 Definition von Variablen;42
2.2.2.2;2.2.2 Bezeichner (Variablennamen);45
2.2.3;2.3 Operatoren im Überblick;47
2.2.3.1;2.3.1 Arithmetische Operatoren;47
2.2.3.2;2.3.2 Zuweisungsoperatoren;50
2.2.3.3;2.3.3 Vergleichsoperatoren;52
2.2.3.4;2.3.4 Logische Operatoren;53
2.2.4;2.4 Fallunterscheidungen;54
2.2.5;2.5 Methoden;58
2.2.5.1;2.5.1 Methoden aus dem JDK nutzen;58
2.2.5.2;2.5.2 Eigene Methoden definieren;59
2.2.5.3;2.5.3 Nützliche Beispiele aus dem JDK;62
2.2.5.4;2.5.4 Signatur einer Methode;65
2.2.5.5;2.5.5 Fehlerbehandlung und Exceptions;66
2.2.6;2.6 Kommentare;66
2.2.7;2.7 Schleifen;67
2.2.7.1;2.7.1 Die for-Schleife;67
2.2.7.2;2.7.2 Die for-each-Schleife;68
2.2.7.3;2.7.3 Die while-Schleife;69
2.2.7.4;2.7.4 Die do-while-Schleife;70
2.2.8;2.8 Rekapitulation;71
2.2.9;2.9 Weiterführende Dokumentation für nächste Schritte;72
2.2.10;2.10 Aufgaben und Lösungen;73
2.2.10.1;2.10.1 Aufgabe 1: Mathematische Berechnungen;73
2.2.10.2;2.10.2 Aufgabe 2: Methode und if;73
2.2.10.3;2.10.3 Aufgabe 3: Selbstabholerrabatt;74
2.2.10.4;2.10.4 Aufgabe 4: Schleifen mit Berechnungen;75
2.2.10.5;2.10.5 Aufgabe 5: Schleifen und fixe Schrittweite;76
2.2.10.6;2.10.6 Aufgabe 6: Schleifen mit variabler Schrittweite;76
2.2.10.7;2.10.7 Aufgabe 7: Verschachtelte Schleifen – Variante 1;77
2.2.10.8;2.10.8 Aufgabe 8: Verschachtelte Schleifen – Variante 2;78
2.2.10.9;2.10.9 Aufgabe 9: Verschachtelte Schleifen – Variante 3;79
2.3;3 Strings;81
2.3.1;3.1 Schnelleinstieg;81
2.3.1.1;3.1.1 Gebräuchliche Stringaktionen;81
2.3.1.2;3.1.2 Suchen und Ersetzen;85
2.3.1.3;3.1.3 Informationen extrahieren und formatieren;87
2.3.2;3.2 Nächste Schritte;89
2.3.2.1;3.2.1 Die Klasse Scanner;90
2.3.2.2;3.2.2 Mehrzeilige Strings (Text Blocks);93
2.3.2.3;3.2.3 Strings und char[]s;94
2.3.3;3.3 Praxisbeispiel: Text in Title Case wandeln;96
2.3.4;3.4 Aufgaben und Lösungen;98
2.3.4.1;3.4.1 Aufgabe 1: Länge, Zeichen und Enthaltensein;98
2.3.4.2;3.4.2 Aufgabe 2: Title Case mit Scanner;98
2.3.4.3;3.4.3 Aufgabe 3: Zeichen wiederholen;99
2.3.4.4;3.4.4 Aufgabe 4: Vokale raten;100
2.3.4.5;3.4.5 Aufgabe 5: String Merge;102
2.4;4 Arrays;105
2.4.1;4.1 Schnelleinstieg;105
2.4.1.1;4.1.1 Gebräuchliche Aktionen;105
2.4.1.2;4.1.2 Mehrdimensionale Arrays;111
2.4.2;4.2 Nächste Schritte;112
2.4.2.1;4.2.1 Eindimensionale Arrays;113
2.4.2.2;4.2.2 Mehrdimensionale Arrays;117
2.4.3;4.3 Praxisbeispiel: Flächen füllen;121
2.4.4;4.4 Aufgaben und Lösungen;124
2.4.4.1;4.4.1 Aufgabe 1: Durcheinanderwürfeln eines Arrays;124
2.4.4.2;4.4.2 Aufgabe 2: Arrays kombinieren;125
2.4.4.3;4.4.3 Aufgabe 3: Rotation um eine oder mehrere Positionen;126
2.4.4.4;4.4.4 Aufgabe 4: Zweidimensionales String-Array ausgeben;128
2.4.4.5;4.4.5 Aufgabe 5: Dreieckiges Array: Upside Down;129
2.5;5 Klassen und Objektorientierung;131
2.5.1;5.1 Schnelleinstieg;131
2.5.1.1;5.1.1 Grundlagen zu Klassen und Objekten;132
2.5.1.2;5.1.2 Eigenschaften (Attribute);134
2.5.1.3;5.1.3 Verhalten (Methoden);139
2.5.1.4;5.1.4 Objekte vergleichen – die Rolle von equals();142
2.5.2;5.2 Nächste Schritte;145
2.5.2.1;5.2.1 Klassen ausführbar machen;145
2.5.2.2;5.2.2 Imports und Packages;148
2.5.2.3;5.2.3 Übergang zum Einsatz einer IDE;150
2.5.2.4;5.2.4 Imports und Packages: Auswirkungen auf unsere Applikation;154
2.5.2.5;5.2.5 Verstecken von Informationen;160
2.5.3;5.3 Vererbung;164
2.5.3.1;5.3.1 Basisklassen und abstrakte Basisklassen;165
2.5.3.2;5.3.2 Overloading und Overriding;167
2.5.4;5.4 Die Klasse Object;169
2.5.4.1;5.4.1 Beispielklasse Person;170
2.5.4.2;5.4.2 Die Methode toString();171
2.5.4.3;5.4.3 Ergänzungen zur Methode equals(Object);172
2.5.4.4;5.4.4 Typprüfung mit instanceof;172
2.5.4.5;5.4.5 Pattern Matching bei instanceof;173
2.5.5;5.5 Schnittstelle (Interface) und Implementierung;174
2.5.6;5.6 Records;176
2.5.7;5.7 Aufgaben und Lösungen;178
2.5.7.1;5.7.1 Aufgabe 1: Obstkorb;178
2.5.7.2;5.7.2 Aufgabe 2: Superheld;179
2.5.7.3;5.7.3 Aufgabe 3: Zähler;181
2.5.7.4;5.7.4 Aufgabe 4: Zähler mit Überlauf;183
2.6;6 Collections;187
2.6.1;6.1 Schnelleinstieg;187
2.6.1.1;6.1.1 Die Klasse ArrayList;187
2.6.1.2;6.1.2 Die Klasse HashSet;193
2.6.1.3;6.1.3 Iteratoren;197
2.6.1.4;6.1.4 Die Klasse HashMap;199
2.6.2;6.2 Nächste Schritte;203
2.6.2.1;6.2.1 Generische Typen (Generics);203
2.6.2.2;6.2.2 Basisinterfaces für die Containerklassen;208
2.6.3;6.3 Praxisbeispiel: Einen Stack selbst realisieren;212
2.6.4;6.4 Aufgaben und Lösungen;214
2.6.4.1;6.4.1 Aufgabe 1: Tennisverein-Mitgliederliste;214
2.6.4.2;6.4.2 Aufgabe 2: Liste mit Farbnamen füllen und filtern;215
2.6.4.3;6.4.3 Aufgabe 3: Duplikate entfernen – Variante 1;215
2.6.4.4;6.4.4 Aufgabe 4: Duplikate entfernen – Variante 2;216
2.6.4.5;6.4.5 Aufgabe 5: Hauptstädte;217
2.6.4.6;6.4.6 Aufgabe 6: Häufigkeiten von Namen;217
2.6.4.7;6.4.7 Aufgabe 7: Objekte mit Maps selbst gebaut;218
2.6.4.8;6.4.8 Aufgabe 8: Listenreihenfolge umdrehen (mit Stack);219
2.7;7 Ergänzendes Wissen;221
2.7.1;7.1 Sichtbarkeits- und Gültigkeitsbereiche;221
2.7.2;7.2 Primitive Typen und Wrapper-Klassen;223
2.7.2.1;7.2.1 Grundlagen;223
2.7.2.2;7.2.2 Casting: Typerweiterungen sowie -verkleinerungen;228
2.7.2.3;7.2.3 Konvertierung von Werten;229
2.7.3;7.3 Ternary-Operator (?-Operator);232
2.7.4;7.4 Aufzählungen mit enum;233
2.7.5;7.5 Switch;235
2.7.6;7.6 Moderne Switch Expressions;237
2.7.6.1;7.6.1 Einführendes Beispiel;237
2.7.6.2;7.6.2 Weitere Gründe für die Neuerung;239
2.7.7;7.7 Pattern Matching bei Switch Expressions (Java 17 Preview);241
2.7.7.1;7.7.1 Einführendes Beispiel;241
2.7.7.2;7.7.2 Spezialitäten;242
2.7.8;7.8 Break und Continue in Schleifen;244
2.7.8.1;7.8.1 Funktionsweise von break und continue in Schleifen;244
2.7.8.2;7.8.2 Wie macht man es besser?;246
2.7.9;7.9 Rekursion;248
2.7.10;7.10 Aufgaben und Lösungen;251
2.7.10.1;7.10.1 Aufgabe 1: Würfelspiel;251
2.7.10.2;7.10.2 Aufgabe 2: Prüfung auf Vokale mit switch;252
2.7.10.3;7.10.3 Aufgabe 3: Temperaturumrechnung;252
2.7.10.4;7.10.4 Aufgabe 4: Palindrom-Prüfung mit Rekursion;254
3;II Aufstieg;257
3.1;8 Mehr zu Klassen und Objektorientierung;259
3.1.1;8.1 Wissenswertes zu Vererbung;259
3.1.1.1;8.1.1 Generalisierung und Spezialisierung;259
3.1.1.2;8.1.2 Polymorphie;261
3.1.1.3;8.1.3 Sub-Classing und Sub-Typing;262
3.1.2;8.2 Varianten innerer Klassen;263
3.1.2.1;8.2.1 »Normale« innere Klassen;263
3.1.2.2;8.2.2 Statische innere Klassen;264
3.1.2.3;8.2.3 Methodenlokale innere Klassen;265
3.1.2.4;8.2.4 Anonyme innere Klassen;265
3.2;9 Lambdas und Streams;267
3.2.1;9.1 Einstieg in Lambdas;267
3.2.1.1;9.1.1 Syntax von Lambdas;267
3.2.1.2;9.1.2 Functional Interfaces und SAM-Typen;268
3.2.2;9.2 Methodenreferenzen;271
3.2.3;9.3 Externe vs. interne Iteration;272
3.2.3.1;9.3.1 Externe Iteration;273
3.2.3.2;9.3.2 Interne Iteration;273
3.2.3.3;9.3.3 Das Interface Predicate;274
3.2.4;9.4 Streams im Überblick;275
3.2.4.1;9.4.1 Streams erzeugen – Create Operations;276
3.2.4.2;9.4.2 Intermediate und Terminal Operations im Überblick;277
3.2.4.3;9.4.3 Zustandslose Intermediate Operations;277
3.2.4.4;9.4.4 Zustandsbehaftete Intermediate Operations;282
3.2.4.5;9.4.5 Terminal Operations;283
3.2.5;9.5 Aufgaben und Lösungen;286
3.2.5.1;9.5.1 Aufgabe 1: Erwachsene aus Personenliste extrahieren;286
3.2.5.2;9.5.2 Aufgabe 2: Stream-API;287
3.2.5.3;9.5.3 Aufgabe 3: Informationen mit Stream-API extrahieren;288
3.2.5.4;9.5.4 Aufgabe 4: Häufigkeiten von Namen;289
3.2.5.5;9.5.5 Aufgabe 5: Kollektoren;289
3.3;10 Verarbeitung von Dateien;291
3.3.1;10.1 Schnelleinstieg;291
3.3.1.1;10.1.1 Das Interface Path und die Utility-Klasse Files;292
3.3.1.2;10.1.2 Anlegen von Dateien und Verzeichnissen;292
3.3.1.3;10.1.3 Inhalt eines Verzeichnisses auflisten;293
3.3.1.4;10.1.4 Pfad ist Datei oder Verzeichnis?;294
3.3.1.5;10.1.5 Dateiaktionen und die Utility-Klasse Files;294
3.3.1.6;10.1.6 Informationen zu Path-Objekten ermitteln;298
3.3.1.7;10.1.7 Kopieren;299
3.3.1.8;10.1.8 Umbenennen;301
3.3.1.9;10.1.9 Löschen;302
3.3.2;10.2 Dateibehandlung und die Klasse File;303
3.3.2.1;10.2.1 Konvertierung von Path in File und zurück;304
3.3.2.2;10.2.2 Die Klasse File im Kurzüberblick;304
3.3.2.3;10.2.3 Dateiinhalte verarbeiten und Systemressourcen;305
3.3.3;10.3 Praxisbeispiel: Directory-Baum darstellen;307
3.3.3.1;10.3.1 Basisvariante;308
3.3.3.2;10.3.2 Variante mit schönerer Darstellung;310
3.3.3.3;10.3.3 Finale Variante mit ausgeklügelter Darstellung;311
3.3.4;10.4 Aufgaben und Lösungen;313
3.3.4.1;10.4.1 Aufgabe 1: Texte in Datei schreiben und wieder lesen;313
3.3.4.2;10.4.2 Aufgabe 2: Dateigrößen;313
3.3.4.3;10.4.3 Aufgabe 3: Existenzprüfung;314
3.3.4.4;10.4.4 Aufgabe 4: Rechteprüfung;314
3.3.4.5;10.4.5 Aufgabe 5: Verzeichnisinhalt auflisten;315
3.4;11 Fehlerbehandlung mit Exceptions;317
3.4.1;11.1 Schnelleinstieg;317
3.4.1.1;11.1.1 Fehlerbehandlung;318
3.4.1.2;11.1.2 Exceptions selbst auslösen – throw;323
3.4.1.3;11.1.3 Eigene Exception-Typen definieren;324
3.4.1.4;11.1.4 Exceptions propagieren – throws;324
3.4.2;11.2 Fehlerbehandlung in der Praxis;325
3.4.3;11.3 Automatic Resource Management (ARM);327
3.4.4;11.4 Hintergrundwissen: Checked und Unchecked Exceptions;328
3.5;12 Datumsverarbeitung;331
3.5.1;12.1 Schnelleinstieg;331
3.5.1.1;12.1.1 Die Aufzählungen DayOfWeek und Month;331
3.5.1.2;12.1.2 Die Klasse LocalDate;333
3.5.1.3;12.1.3 Die Klassen LocalTime und LocalDateTime;337
3.5.2;12.2 Nächste Schritte;339
3.5.2.1;12.2.1 Datumsarithmetik;339
3.5.2.2;12.2.2 Formatierung und Parsing;341
3.5.3;12.3 Praxisbeispiel: Kalenderausgabe;343
3.5.4;12.4 Aufgaben und Lösungen;346
3.5.4.1;12.4.1 Aufgabe 1: Wochentage;346
3.5.4.2;12.4.2 Aufgabe 2: Freitag, der 13.;347
3.5.4.3;12.4.3 Aufgabe 3: Mehrmals Freitag, der 13.;348
3.5.4.4;12.4.4 Aufgabe 4: Schaltjahre;349
4;III Praxisbeispiele;351
4.1;13 Praxisbeispiel: Tic Tac Toe;353
4.1.1;13.1 Spielfeld initialisieren und darstellen;353
4.1.2;13.2 Setzen der Steine;354
4.1.3;13.3 Prüfen auf Sieg;355
4.1.4;13.4 Bausteine im Einsatz;357
4.2;14 Praxisbeispiel: CSV-Highscore-Liste einlesen;359
4.2.1;14.1 Verarbeitung von Spielständen (Highscores);359
4.2.2;14.2 Extraktion der Daten;361
4.2.3;14.3 Besonderheiten der Implementierung;362
4.3;15 Praxisbeispiel: Worträtsel;363
4.3.1;15.1 Applikationsdesign – Vorüberlegungen zur Strukturierung;364
4.3.2;15.2 Einlesen der verfügbaren Wörter;364
4.3.3;15.3 Hilfsdatenstrukturen;366
4.3.4;15.4 Datenmodell;366
4.3.4.1;15.4.1 Datenspeicherung und Initialisierung;366
4.3.4.2;15.4.2 Zufällige Wahl von Richtung, Position, Wort und Buchstabe;368
4.3.4.3;15.4.3 Algorithmus zum Verstecken von Wörtern;368
4.3.4.4;15.4.4 Wort prüfen und platzieren;370
4.3.5;15.5 HTML-Erzeugung;372
4.3.6;15.6 Hauptapplikation;373
4.3.7;15.7 Ausgabe als HTML und Darstellung im Browser;375
4.3.8;15.8 Fazit;376
5;IV Schlussgedanken;377
5.1;16 Gute Angewohnheiten;379
5.1.1;16.1 Grundregeln eines guten Programmierstils;379
5.1.2;16.2 Coding Conventions;380
5.1.2.1;16.2.1 Grundlegende Namens- und Formatierungsregeln;380
5.1.2.2;16.2.2 Namensgebung;382
5.1.2.3;16.2.3 Dokumentation;385
5.1.2.4;16.2.4 Programmdesign;385
5.1.2.5;16.2.5 Parameterlisten;386
5.1.2.6;16.2.6 Logik und Kontrollfluss;387
5.1.3;16.3 Sourcecode-Prüfung;388
5.1.4;16.4 JUnit 5: Auch ans Testen denken;390
5.1.4.1;16.4.1 Das JUnit-Framework;390
5.1.4.2;16.4.2 Schreiben und Ausführen von Tests;392
5.2;17 Schlusswort;395
6;V Anhang;397
6.1;A Schlüsselwörter im Überblick;399
6.2;B Schnelleinstieg JShell;403
6.3;C Grundlagen zur JVM und Infos zum Java-Ökosystem;407
6.3.1;C.1 Wissenswertes zur Java Virtual Machine (JVM);407
6.3.1.1;C.1.1 Einführendes Beispiel;408
6.3.1.2;C.1.2 Ausführung eines Java-Programms;409
6.3.2;C.2 Das Java-Ökosystem im Kurzüberblick;410
6.4;Literaturverzeichnis;413
6.5;Index;415


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.


Ihre Fragen, Wünsche oder Anmerkungen
Vorname*
Nachname*
Ihre E-Mail-Adresse*
Kundennr.
Ihre Nachricht*
Lediglich mit * gekennzeichnete Felder sind Pflichtfelder.
Wenn Sie die im Kontaktformular eingegebenen Daten durch Klick auf den nachfolgenden Button übersenden, erklären Sie sich damit einverstanden, dass wir Ihr Angaben für die Beantwortung Ihrer Anfrage verwenden. Selbstverständlich werden Ihre Daten vertraulich behandelt und nicht an Dritte weitergegeben. Sie können der Verwendung Ihrer Daten jederzeit widersprechen. Das Datenhandling bei Sack Fachmedien erklären wir Ihnen in unserer Datenschutzerklärung.