Einfach Java

Book description

Die Leser werden auf Ihrer Entdeckungsreise vom Java-Experten Michael Inden begleitet. Er erklärt ihnen die Grundlagen der Java-Programmierung leicht und verständlich.Die trockene Theorie wird auf ein Minimum reduziert und immer mit kleinen Beispielen demonstriert, die mit der JShell interaktiv ausprobiert werden können. Dieses Vorgehen eignet sich ideal, um im eigenen Tempo Java im Selbststudium zu erlernen.Das Buch besteht aus in sich abgeschlossenen Kapiteln zu den wichtigen Bereichen der Programmiersprache Java. Mit Aufgaben und Musterlösungen, sodass das zuvor Gelernte direkt anhand neuer Problemstellungen praktiziert werden kann.Zahlreiche kurze Codebeispiele verdeutlichen die Lerninhalte. Leser lernen, ihren Sourcecode sauber zu strukturieren und einen guten Stil zu verfolgen.

Table of contents

  1. Cover
  2. Über der Author
  3. Titel
  4. Impressum
  5. Dedication
  6. Inhaltsverzeichnis
  7. Vorwort
  8. I Einstieg
    1. 1 Einführung
      1. 1.1 Java im Überblick
      2. 1.2 Los geht’s – Installation
        1. 1.2.1 Java-Download
        2. 1.2.2 Installation des JDKs
        3. 1.2.3 Nacharbeiten nach der Java-Installation
        4. 1.2.4 Java-Installation prüfen
      3. 1.3 Entwicklungsumgebungen
        1. 1.3.1 Installation von Eclipse
        2. 1.3.2 Eclipse starten
        3. 1.3.3 Erstes Projekt in Eclipse
        4. 1.3.4 Erste Klasse in Eclipse
    2. 2 Schnelleinstieg
      1. 2.1 Hallo Welt (Hello World)
      2. 2.2 Variablen und Datentypen
        1. 2.2.1 Definition von Variablen
        2. 2.2.2 Bezeichner (Variablennamen)
      3. 2.3 Operatoren im Überblick
        1. 2.3.1 Arithmetische Operatoren
        2. 2.3.2 Zuweisungsoperatoren
        3. 2.3.3 Vergleichsoperatoren
        4. 2.3.4 Logische Operatoren
      4. 2.4 Fallunterscheidungen
      5. 2.5 Methoden
        1. 2.5.1 Methoden aus dem JDK nutzen
        2. 2.5.2 Eigene Methoden definieren
        3. 2.5.3 Nützliche Beispiele aus dem JDK
        4. 2.5.4 Signatur einer Methode
        5. 2.5.5 Fehlerbehandlung und Exceptions
      6. 2.6 Kommentare
      7. 2.7 Schleifen
        1. 2.7.1 Die for-Schleife
        2. 2.7.2 Die for-each-Schleife
        3. 2.7.3 Die while-Schleife
        4. 2.7.4 Die do-while-Schleife
      8. 2.8 Rekapitulation
      9. 2.9 Weiterführende Dokumentation für nächste Schritte
      10. 2.10 Aufgaben und Lösungen
        1. 2.10.1 Aufgabe 1: Mathematische Berechnungen
        2. 2.10.2 Aufgabe 2: Methode und if
        3. 2.10.3 Aufgabe 3: Selbstabholerrabatt
        4. 2.10.4 Aufgabe 4: Schleifen mit Berechnungen
        5. 2.10.5 Aufgabe 5: Schleifen und fixe Schrittweite
        6. 2.10.6 Aufgabe 6: Schleifen mit variabler Schrittweite
        7. 2.10.7 Aufgabe 7: Verschachtelte Schleifen – Variante 1
        8. 2.10.8 Aufgabe 8: Verschachtelte Schleifen – Variante 2
        9. 2.10.9 Aufgabe 9: Verschachtelte Schleifen – Variante 3
    3. 3 Strings
      1. 3.1 Schnelleinstieg
        1. 3.1.1 Gebräuchliche Stringaktionen
        2. 3.1.2 Suchen und Ersetzen
        3. 3.1.3 Informationen extrahieren und formatieren
      2. 3.2 Nächste Schritte
        1. 3.2.1 Die Klasse Scanner
        2. 3.2.2 Mehrzeilige Strings (Text Blocks)
        3. 3.2.3 Strings und char[]s
      3. 3.3 Praxisbeispiel: Text in Title Case wandeln
      4. 3.4 Aufgaben und Lösungen
        1. 3.4.1 Aufgabe 1: Länge, Zeichen und Enthaltensein
        2. 3.4.2 Aufgabe 2: Title Case mit Scanner
        3. 3.4.3 Aufgabe 3: Zeichen wiederholen
        4. 3.4.4 Aufgabe 4: Vokale raten
        5. 3.4.5 Aufgabe 5: String Merge
    4. 4 Arrays
      1. 4.1 Schnelleinstieg
        1. 4.1.1 Gebräuchliche Aktionen
        2. 4.1.2 Mehrdimensionale Arrays
      2. 4.2 Nächste Schritte
        1. 4.2.1 Eindimensionale Arrays
        2. 4.2.2 Mehrdimensionale Arrays
      3. 4.3 Praxisbeispiel: Flächen füllen
      4. 4.4 Aufgaben und Lösungen
        1. 4.4.1 Aufgabe 1: Durcheinanderwürfeln eines Arrays
        2. 4.4.2 Aufgabe 2: Arrays kombinieren
        3. 4.4.3 Aufgabe 3: Rotation um eine oder mehrere Positionen
        4. 4.4.4 Aufgabe 4: Zweidimensionales String-Array ausgeben
        5. 4.4.5 Aufgabe 5: Dreieckiges Array: Upside Down
    5. 5 Klassen und Objektorientierung
      1. 5.1 Schnelleinstieg
        1. 5.1.1 Grundlagen zu Klassen und Objekten
        2. 5.1.2 Eigenschaften (Attribute)
        3. 5.1.3 Verhalten (Methoden)
        4. 5.1.4 Objekte vergleichen – die Rolle von equals()
      2. 5.2 Nächste Schritte
        1. 5.2.1 Klassen ausführbar machen
        2. 5.2.2 Imports und Packages
        3. 5.2.3 Übergang zum Einsatz einer IDE
        4. 5.2.4 Imports und Packages: Auswirkungen auf unsere Applikation
        5. 5.2.5 Verstecken von Informationen
      3. 5.3 Vererbung
        1. 5.3.1 Basisklassen und abstrakte Basisklassen
        2. 5.3.2 Overloading und Overriding
      4. 5.4 Die Klasse Object
        1. 5.4.1 Beispielklasse Person
        2. 5.4.2 Die Methode toString()
        3. 5.4.3 Ergänzungen zur Methode equals(Object)
        4. 5.4.4 Typprüfung mit instanceof
        5. 5.4.5 Pattern Matching bei instanceof
      5. 5.5 Schnittstelle (Interface) und Implementierung
      6. 5.6 Records
      7. 5.7 Aufgaben und Lösungen
        1. 5.7.1 Aufgabe 1: Obstkorb
        2. 5.7.2 Aufgabe 2: Superheld
        3. 5.7.3 Aufgabe 3: Zähler
        4. 5.7.4 Aufgabe 4: Zähler mit Überlauf
    6. 6 Collections
      1. 6.1 Schnelleinstieg
        1. 6.1.1 Die Klasse ArrayList
        2. 6.1.2 Die Klasse HashSet
        3. 6.1.3 Iteratoren
        4. 6.1.4 Die Klasse HashMap
      2. 6.2 Nächste Schritte
        1. 6.2.1 Generische Typen (Generics)
        2. 6.2.2 Basisinterfaces für die Containerklassen
      3. 6.3 Praxisbeispiel: Einen Stack selbst realisieren
      4. 6.4 Aufgaben und Lösungen
        1. 6.4.1 Aufgabe 1: Tennisverein-Mitgliederliste
        2. 6.4.2 Aufgabe 2: Liste mit Farbnamen füllen und filtern
        3. 6.4.3 Aufgabe 3: Duplikate entfernen – Variante 1
        4. 6.4.4 Aufgabe 4: Duplikate entfernen – Variante 2
        5. 6.4.5 Aufgabe 5: Hauptstädte
        6. 6.4.6 Aufgabe 6: Häufigkeiten von Namen
        7. 6.4.7 Aufgabe 7: Objekte mit Maps selbst gebaut
        8. 6.4.8 Aufgabe 8: Listenreihenfolge umdrehen (mit Stack)
    7. 7 Ergänzendes Wissen
      1. 7.1 Sichtbarkeits- und Gültigkeitsbereiche
      2. 7.2 Primitive Typen und Wrapper-Klassen
        1. 7.2.1 Grundlagen
        2. 7.2.2 Casting: Typerweiterungen sowie -verkleinerungen
        3. 7.2.3 Konvertierung von Werten
      3. 7.3 Ternary-Operator (?-Operator)
      4. 7.4 Aufzählungen mit enum
      5. 7.5 Switch
      6. 7.6 Moderne Switch Expressions
        1. 7.6.1 Einführendes Beispiel
        2. 7.6.2 Weitere Gründe für die Neuerung
      7. 7.7 Pattern Matching bei Switch Expressions (Java 17 Preview)
        1. 7.7.1 Einführendes Beispiel
        2. 7.7.2 Spezialitäten
      8. 7.8 Break und Continue in Schleifen
        1. 7.8.1 Funktionsweise von break und continue in Schleifen
        2. 7.8.2 Wie macht man es besser?
      9. 7.9 Rekursion
      10. 7.10 Aufgaben und Lösungen
        1. 7.10.1 Aufgabe 1: Würfelspiel
        2. 7.10.2 Aufgabe 2: Prüfung auf Vokale mit switch
        3. 7.10.3 Aufgabe 3: Temperaturumrechnung
        4. 7.10.4 Aufgabe 4: Palindrom-Prüfung mit Rekursion
  9. II Aufstieg
    1. 8 Mehr zu Klassen und Objektorientierung
      1. 8.1 Wissenswertes zu Vererbung
        1. 8.1.1 Generalisierung und Spezialisierung
        2. 8.1.2 Polymorphie
        3. 8.1.3 Sub-Classing und Sub-Typing
      2. 8.2 Varianten innerer Klassen
        1. 8.2.1 »Normale« innere Klassen
        2. 8.2.2 Statische innere Klassen
        3. 8.2.3 Methodenlokale innere Klassen
        4. 8.2.4 Anonyme innere Klassen
    2. 9 Lambdas und Streams
      1. 9.1 Einstieg in Lambdas
        1. 9.1.1 Syntax von Lambdas
        2. 9.1.2 Functional Interfaces und SAM-Typen
      2. 9.2 Methodenreferenzen
      3. 9.3 Externe vs. interne Iteration
        1. 9.3.1 Externe Iteration
        2. 9.3.2 Interne Iteration
        3. 9.3.3 Das Interface Predicate<T>
      4. 9.4 Streams im Überblick
        1. 9.4.1 Streams erzeugen – Create Operations
        2. 9.4.2 Intermediate und Terminal Operations im Überblick
        3. 9.4.3 Zustandslose Intermediate Operations
        4. 9.4.4 Zustandsbehaftete Intermediate Operations
        5. 9.4.5 Terminal Operations
      5. 9.5 Aufgaben und Lösungen
        1. 9.5.1 Aufgabe 1: Erwachsene aus Personenliste extrahieren
        2. 9.5.2 Aufgabe 2: Stream-API
        3. 9.5.3 Aufgabe 3: Informationen mit Stream-API extrahieren
        4. 9.5.4 Aufgabe 4: Häufigkeiten von Namen
        5. 9.5.5 Aufgabe 5: Kollektoren
    3. 10 Verarbeitung von Dateien
      1. 10.1 Schnelleinstieg
        1. 10.1.1 Das Interface Path und die Utility-Klasse Files
        2. 10.1.2 Anlegen von Dateien und Verzeichnissen
        3. 10.1.3 Inhalt eines Verzeichnisses auflisten
        4. 10.1.4 Pfad ist Datei oder Verzeichnis?
        5. 10.1.5 Dateiaktionen und die Utility-Klasse Files
        6. 10.1.6 Informationen zu Path-Objekten ermitteln
        7. 10.1.7 Kopieren
        8. 10.1.8 Umbenennen
        9. 10.1.9 Löschen
      2. 10.2 Dateibehandlung und die Klasse File
        1. 10.2.1 Konvertierung von Path in File und zurück
        2. 10.2.2 Die Klasse File im Kurzüberblick
        3. 10.2.3 Dateiinhalte verarbeiten und Systemressourcen
      3. 10.3 Praxisbeispiel: Directory-Baum darstellen
        1. 10.3.1 Basisvariante
        2. 10.3.2 Variante mit schönerer Darstellung
        3. 10.3.3 Finale Variante mit ausgeklügelter Darstellung
      4. 10.4 Aufgaben und Lösungen
        1. 10.4.1 Aufgabe 1: Texte in Datei schreiben und wieder lesen
        2. 10.4.2 Aufgabe 2: Dateigrößen
        3. 10.4.3 Aufgabe 3: Existenzprüfung
        4. 10.4.4 Aufgabe 4: Rechteprüfung
        5. 10.4.5 Aufgabe 5: Verzeichnisinhalt auflisten
    4. 11 Fehlerbehandlung mit Exceptions
      1. 11.1 Schnelleinstieg
        1. 11.1.1 Fehlerbehandlung
        2. 11.1.2 Exceptions selbst auslösen – throw
        3. 11.1.3 Eigene Exception-Typen definieren
        4. 11.1.4 Exceptions propagieren – throws
      2. 11.2 Fehlerbehandlung in der Praxis
      3. 11.3 Automatic Resource Management (ARM)
      4. 11.4 Hintergrundwissen: Checked und Unchecked Exceptions
    5. 12 Datumsverarbeitung
      1. 12.1 Schnelleinstieg
        1. 12.1.1 Die Aufzählungen DayOfWeek und Month
        2. 12.1.2 Die Klasse LocalDate
        3. 12.1.3 Die Klassen LocalTime und LocalDateTime
      2. 12.2 Nächste Schritte
        1. 12.2.1 Datumsarithmetik
        2. 12.2.2 Formatierung und Parsing
      3. 12.3 Praxisbeispiel: Kalenderausgabe
      4. 12.4 Aufgaben und Lösungen
        1. 12.4.1 Aufgabe 1: Wochentage
        2. 12.4.2 Aufgabe 2: Freitag, der 13.
        3. 12.4.3 Aufgabe 3: Mehrmals Freitag, der 13.
        4. 12.4.4 Aufgabe 4: Schaltjahre
  10. III Praxisbeispiele
    1. 13 Praxisbeispiel: Tic Tac Toe
      1. 13.1 Spielfeld initialisieren und darstellen
      2. 13.2 Setzen der Steine
      3. 13.3 Prüfen auf Sieg
      4. 13.4 Bausteine im Einsatz
    2. 14 Praxisbeispiel: CSV-Highscore-Liste einlesen
      1. 14.1 Verarbeitung von Spielständen (Highscores)
      2. 14.2 Extraktion der Daten
      3. 14.3 Besonderheiten der Implementierung
    3. 15 Praxisbeispiel: Worträtsel
      1. 15.1 Applikationsdesign – Vorüberlegungen zur Strukturierung
      2. 15.2 Einlesen der verfügbaren Wörter
      3. 15.3 Hilfsdatenstrukturen
      4. 15.4 Datenmodell
        1. 15.4.1 Datenspeicherung und Initialisierung
        2. 15.4.2 Zufällige Wahl von Richtung, Position, Wort und Buchstabe
        3. 15.4.3 Algorithmus zum Verstecken von Wörtern
        4. 15.4.4 Wort prüfen und platzieren
      5. 15.5 HTML-Erzeugung
      6. 15.6 Hauptapplikation
      7. 15.7 Ausgabe als HTML und Darstellung im Browser
      8. 15.8 Fazit
  11. IV Schlussgedanken
    1. 16 Gute Angewohnheiten
      1. 16.1 Grundregeln eines guten Programmierstils
      2. 16.2 Coding Conventions
        1. 16.2.1 Grundlegende Namens- und Formatierungsregeln
        2. 16.2.2 Namensgebung
        3. 16.2.3 Dokumentation
        4. 16.2.4 Programmdesign
        5. 16.2.5 Parameterlisten
        6. 16.2.6 Logik und Kontrollfluss
      3. 16.3 Sourcecode-Prüfung
      4. 16.4 JUnit 5: Auch ans Testen denken
        1. 16.4.1 Das JUnit-Framework
        2. 16.4.2 Schreiben und Ausführen von Tests
    2. 17 Schlusswort
  12. V Anhang
    1. A Schlüsselwörter im Überblick
    2. B Schnelleinstieg JShell
    3. C Grundlagen zur JVM und Infos zum Java-Ökosystem
      1. C.1 Wissenswertes zur Java Virtual Machine (JVM)
        1. C.1.1 Einführendes Beispiel
        2. C.1.2 Ausführung eines Java-Programms
      2. C.2 Das Java-Ökosystem im Kurzüberblick
  13. Literaturverzeichnis
  14. Index

Product information

  • Title: Einfach Java
  • Author(s): Michael Inden
  • Release date: September 2021
  • Publisher(s): dpunkt
  • ISBN: 9783864908521