E-Book, Deutsch, 463 Seiten
Reihe: Rheinwerk Computing
Kofler Java
4. Auflage 2022
ISBN: 978-3-8362-8394-6
Verlag: Rheinwerk
Format: EPUB
Kopierschutz: 0 - No protection
Der Grundkurs
E-Book, Deutsch, 463 Seiten
Reihe: Rheinwerk Computing
ISBN: 978-3-8362-8394-6
Verlag: Rheinwerk
Format: EPUB
Kopierschutz: 0 - No protection
Java ist das Fundament der modernen Softwareentwicklung und Grundlage unzähliger IT-Projekte. Michael Kofler führt Sie in die Programmiersprache ein und vermittelt alle Konzepte, die Sie für den Einstieg brauchen. Von einfachen Beispielen bis zum objektorientierten Programm finden Sie alles übersichtlich und auf den Punkt präsentiert.
Aktuell zu Java LTS 17.
Aus dem Inhalt:
- Sprachgrundlagen
- Installation von Java und IntelliJ IDEA
- Schleifen, Verzweigungen und Methoden
- Objektorientierung, Vererbungen und Schnittstellen
- Vererbung und Interfaces
- Exceptions (Fehlerbehandlung)
- Umgang mit Datum und Uhrzeit
- Zugriff auf Dateien
- Listen, Sets und Maps
- Lambda-Ausdrücke
- Generische Klassen und Methoden
- Einführung in GUIs mit JavaFX
Autoren/Hrsg.
Weitere Infos & Material
Vorwort ... 21 1. Hello World! ... 23 1.1 ... Einführung ... 23 1.2 ... Java installieren ... 24 1.3 ... IntelliJ IDEA ... 27 1.4 ... Der Hello-World-Code ... 33 1.5 ... Alternativen zu IntelliJ ... 36 2. Java-Crashkurs ... 38 2.1 ... Die Idee des objektorientierten Programmierens ... 38 2.2 ... Java-Syntax ... 43 2.3 ... Wiederholungsfragen ... 48 3. Variablenverwaltung ... 49 3.1 ... Variablen ... 49 3.2 ... Elementare Datentypen ... 53 3.3 ... Literale ... 59 3.4 ... Variablen einlesen und ausgeben ... 62 3.5 ... Variablen im größeren Java-Kontext ... 65 3.6 ... Konstanten und Enums ... 71 3.7 ... Wiederholungsfragen und Übungen ... 73 4. Operatoren ... 74 4.1 ... Überblick ... 74 4.2 ... Details und Sonderfälle ... 76 4.3 ... Wiederholungsfragen ... 83 5. Verzweigungen und Schleifen ... 84 5.1 ... »if«-Verzweigungen ... 85 5.2 ... »if«-Kurzschreibweise (ternärer Operator) ... 90 5.3 ... »switch«-Verzweigungen ... 91 5.4 ... »for«-Schleifen ... 94 5.5 ... »for-each«-Schleifen ... 101 5.6 ... »while«- und »do-while»-Schleifen ... 102 5.7 ... »break« und »continue« ... 104 5.8 ... Wiederholungsfragen und Übungen ... 106 6. Arrays ... 108 6.1 ... Syntax ... 108 6.2 ... Mit Arrays arbeiten ... 114 6.3 ... Wiederholungsfragen ... 118 7. Zeichenketten ... 119 7.1 ... Der Datentyp »char« ... 119 7.2 ... Die »String«-Klasse ... 121 7.3 ... Formatierung und Konvertierung ... 129 7.4 ... Die »StringBuilder«-Klasse ... 135 7.5 ... Beispiele ... 136 7.6 ... Wiederholungsfragen und Übungen ... 139 8. Methoden ... 140 8.1 ... Einführung ... 141 8.2 ... Parameterliste ... 144 8.3 ... Rückgabewert und »return« ... 150 8.4 ... Rekursion ... 152 8.5 ... Tipps zum richtigen Einsatz von Methoden ... 154 8.6 ... Beispiele ... 155 8.7 ... Wiederholungsfragen und Übungen ... 164 9. Datum und Uhrzeit ... 168 9.1 ... Datum und Zeit seit Java 8 ... 169 9.2 ... Veraltete Datums- und Zeitklassen (Date, Calendar) ... 178 9.3 ... Wiederholungsfragen und Übungen ... 186
10. Exceptions ... 187 10.1 ... Exception-Klassen ... 188 10.2 ... try-catch ... 190 10.3 ... Fehleranfällige Methoden deklarieren (»throws«) ... 194 10.4 ... Selbst Exceptions auslösen (»throw«) ... 195 10.5 ... Beispiel ... 196 10.6 ... Wiederholungsfragen und Übungen ... 199
11. Klassen und Records ... 201 11.1 ... Eigene Klassen entwickeln ... 202 11.2 ... Der Konstruktor ... 212 11.3 ... »get«- und »set«-Methoden (Getter/Setter) ... 217 11.4 ... Records ... 220 11.5 ... UML-Diagramme ... 224 11.6 ... Beispiel: Bücher und Kapitel ... 225 11.7 ... Wiederholungsfragen und Übungen ... 229
12. Listen, Sets und Maps ... 232 12.1 ... Generische Klassen anwenden ... 233 12.2 ... Listen ... 236 12.3 ... Sets ... 238 12.4 ... Maps ... 241 12.5 ... Beispiel: Polygone ... 243 12.6 ... Beispiel: Schachfigur Springer ... 247 12.7 ... Beispiel: Mitarbeiter verwalten ... 253 12.8 ... Wiederholungsfragen und Übungen ... 257
13. Vererbung ... 258 13.1 ... Vererbung ... 258 13.2 ... Beispiel: Klassen für Fahrräder ... 263 13.3 ... Finale und abstrakte Klassen ... 266 13.4 ... Die »Object«-Klasse ... 274 13.5 ... Beispiel: Schachfiguren ... 279 13.6 ... Wiederholungsfragen und Übungen ... 283
14. Schnittstellen ... 286 14.1 ... »interface« und »implements« ... 286 14.2 ... Beispiel: Geometrische Figuren ... 291 14.3 ... Wiederholungsfragen und Übungen ... 295
15. Geschachtelte und anonyme Klassen ... 296 15.1 ... Geschachtelte Klassen ... 297 15.2 ... Anonyme Klassen ... 299 15.3 ... Statische geschachtelte Klassen ... 305
16. Generische Klassen und Methoden ... 307 16.1 ... Einführung ... 307 16.2 ... Deklaration generischer Klassen und Schnittstellen ... 309 16.3 ... Deklaration generischer Methoden ... 311 16.4 ... Wildcards ... 312 16.5 ... Wiederholungsfragen und Übungen ... 317
17. Lambda-Ausdrücke ... 318 17.1 ... Hello Lambda World! ... 318 17.2 ... Lambda-Syntax ... 320 17.3 ... Generische Lambda-Schnittstellen ... 325 17.4 ... Funktionale Programmierung mit Streams ... 328 17.5 ... Beispiel: Mitarbeiter sortieren und auswählen ... 334 17.6 ... Wiederholungsfragen ... 336
18. Dateien und Verzeichnisse ... 338 18.1 ... Klassen- und Schnittstellenüberblick ... 338 18.2 ... Dateien und Verzeichnisse ergründen ... 340 18.3 ... Dateien und Verzeichnisse bearbeiten ... 347 18.4 ... Textdateien lesen und schreiben ... 350 18.5 ... Beispiel: Evaluierungsdaten auswerten ... 353 18.6 ... Wiederholungsaufgaben und Übungen ... 357
19. JavaFX ... 359 19.1 ... Hello JavaFX! ... 359 19.2 ... Arbeiten mit Steuerelementen ... 364 19.3 ... Grafikprogrammierung ... 372 19.4 ... Wiederholungsaufgaben und Übungen ... 379
20. Java-Interna und -Bibliotheken ... 380 20.1 ... Java-Compiler und -Interpreter ... 381 20.2 ... Der »args«-Parameter ... 386 20.3 ... Die Java-Shell ... 389 20.4 ... import ... 391 20.5 ... Pakete ... 393 20.6 ... Bibliotheken ... 395 20.7 ... Module (»Jigsaw«) ... 400 20.8 ... Wiederholungsfragen ... 403 A. Crashkurs IntelliJ IDEA ... 404 A.1 ... Benutzeroberfläche ... 404 A.2 ... Projekte ... 410 A.3 ... Einstellungen ... 411 B. Lösungen ... 415 B.1 ... Kapitel 2, »Java-Crashkurs« ... 415 B.2 ... Kapitel 3, »Variablenverwaltung« ... 417 B.3 ... Kapitel 4, »Operatoren« ... 419 B.4 ... Kapitel 5, »Verzweigungen und Schleifen« ... 420 B.5 ... Kapitel 6, »Arrays« ... 422 B.6 ... Kapitel 7, »Zeichenketten« ... 423 B.7 ... Kapitel 8, »Methoden« ... 425 B.8 ... Kapitel 9, »Datum und Uhrzeit« ... 429 B.9 ... Kapitel 10, »Exceptions« ... 429 B.10 ... Kapitel 11, »Klassen« ... 432 B.11 ... Kapitel 12, »Listen, Sets und Maps« ... 435 B.12 ... Kapitel 13, »Vererbung« ... 439 B.13 ... Kapitel 14, »Schnittstellen« ... 441 B.14 ... Kapitel 16, »Generische Klassen und Methoden« ... 442 B.15 ... Kapitel 17, »Lambda-Ausdrücke« ... 442 B.16 ... Kapitel 18, »Dateien und Verzeichnisse« ... 445 B.17 ... Kapitel 19, »JavaFX« ... 447 B.18 ... Kapitel 20, »Java-Interna und -Bibliotheken« ... 449 Index ... 453
2.2 Java-Syntax
In Java gelten die folgenden elementaren Syntaxregeln:
-
Code wird durch die geschwungenen Klammern { und } strukturiert.
-
Codeeinrückungen sind optional und nicht Teil der Java-Syntax.
-
Fast jede Java-Anweisung muss mit einem Strichpunkt beendet werden. Von dieser Regel ausgenommen sind Schleifen, Verzweigungen, Klassen und Methoden (bzw. ganz allgemein Java-Schlüsselwörter, die einen Codeblock einleiten).
-
Java-Anweisungen dürfen über mehrere Zeilen reichen. Der Java-Compiler ist flexibel, was den Umgang mit Leerzeichen und Zeilenumbrüchen betrifft. So wird das folgende Kommando anstandslos akzeptiert:
System . out .
println ("Hello World"); -
Der Punkt . verbindet Klassen oder Objekte mit den dazugehörigen Methoden. Im obigen Beispiel ist System der Name einer vorgegebenen Java-Klasse.
.out bezieht sich auf eine Variable dieser Klasse.
.println wendet eine Methode auf den Inhalt dieser Variable an.
-
Zeichenketten werden wie in "abc" in doppelte Anführungszeichen gestellt:
String s = "Das ist eine Zeichenkette"; -
Java unterscheidet zwischen Groß- und Kleinschreibung!
-
Variablen, Parameter und Methoden werden mit einem Datentyp deklariert. Ein typisches Beispiel ist int i. Diese Anweisung macht klar, dass in der Variablen i ganze Zahlen gespeichert werden sollen. Nur wenn der Compiler den Datentyp selbst erkennen kann, können Sie statt des Datentyps das Schlüsselwort var verwenden (var s = "abc").
-
Java kümmert sich selbst um die Speicherverwaltung. Der Speicherplatz von nicht mehr benötigten Variablen wird automatisch freigegeben.
Ärger mit Strichpunkten
Strichpunkte verursachen nicht nur Ärger, wenn man sie vergisst. Mitunter schadet auch ein Strichpunkt zu viel. Das liegt daran, dass Java einen einzelnen Strichpunkt syntaktisch erlaubt und als eine Art leeres Kommando betrachtet.
Das folgende Beispiel zeigt eine korrekte Schleife. (Was Schleifen sind und wie sie gebildet werden, lernen Sie im Abschnitt 2.1, »Die Idee des objektorientierten Programmierens«.) Die println-Methode wird 10-mal ausgeführt und gibt den jeweils aktuellen Wert von i aus, also die Zahlen von 0 bis 9.
int i;
for(i=0; i<10; i++) {
System.out.println(i);
}
Der folgende Code sieht auf den ersten Blick gleich aus. Allerdings ist der Strichpunkt nach for(...) falsch!
Java erwartet an dieser Stelle keinen Strichpunkt, sondern eine Anweisung oder einen Codeblock in geschwungenen Klammern. Leider ist es kein Syntaxfehler, wenn Sie hier doch einen Strichpunkt setzen. Java betrachtet dann den Strichpunkt als leeres Kommando (No Operation). Java durchläuft die Schleife wie vorhin, tut aber jedes Mal: nichts! println wird nur einmal ausgeführt, nachdem die Schleife schon fertig ist.
int i;
for(i=0; i<10; i++); {
System.out.println(i);
}
Regeln zur Benennung von Variablen, Klassen etc.
Für die Bildung von Variablennamen, Klassennamen etc. gelten die folgenden Regeln:
-
Der Name darf aus beliebig vielen Buchstaben, Ziffern sowie den Zeichen _ und $ zusammengesetzt werden. Der Einsatz des Zeichens $ wird nur für automatisch generierten Code empfohlen.
-
Der Name darf nicht mit einer Ziffer beginnen.
-
Der Name darf nicht mit Java-Schlüsselwörtern wie if oder break übereinstimmen. Ebenfalls unzulässig sind die booleschen Literale true und false sowie das Null-Literal null.
-
Sprachspezifische Buchstaben wie ä, ö, ü, ß sind erlaubt, können aber zu Problemen führen, wenn der Zeichensatz der Java-Code-Datei nicht den Erwartungen des Java-Compilers entspricht.
-
Java unterscheidet zwischen Groß- und Kleinschreibung!
Darüber hinaus gibt es einige Konventionen, deren Einhaltung zwar nicht zwingend erforderlich ist, aber doch dringend empfohlen wird:
-
Namen von Klassen, Aufzählungen (Enumerationen) und Schnittstellen beginnen mit einem Großbuchstaben.
-
Namen von Methoden, Variablen und Parametern beginnen mit einem Kleinbuchstaben.
-
Namen von Konstanten verwenden ausschließlich Großbuchstaben.
-
Alle selbst gewählten Namen sollten entweder deutsch oder englisch sein. Beide Varianten für sich sind in Ordnung (außer natürlich in internationalen Projekten) – vermeiden Sie aber ein »denglisches« Sprachwirrwarr!
Java-Schlüsselwörter
Die folgenden Schlüsselwörter sind reserviert und dürfen nicht als Namen von Variablen, Klassen etc. verwendet werden:
assert double import protected throw
boolean else instanceof public throws
break enum int record transient
byte extends interface return true
case false long sealed try
catch final native short var
char finally new static void
class float non-sealed strictfp volatile
const for null super while
continue if package switch yield
default goto permits synchronized
Kommentare im Java-Code
Es gibt drei Möglichkeiten, Kommentare in den Quellcode zu integrieren:
-
Einzeilige Kommentare werden mit // eingeleitet und reichen bis zum Ende der Zeile.
-
Mehrzeilige Kommentare beginnen mit /* und enden mit */.
-
Javadoc-Kommentare werden mit /** eingeleitet und enden ebenfalls mit */. Diese Kommentare können vom Kommando javadoc ausgewertet und zu einem HTML-Dokument verarbeitet werden, das alle Klassen, Datenfelder, Methoden, Parameter etc. eines Java-Projekts beschreibt.
Die Java-Standardbibliothek
Allen Java-Programmen steht in der sogenannten Standardbibliothek eine riesige Sammlung vordefinierter Klassen zur Verfügung. Es ist nahezu unmöglich, Java-Programme zu verfassen, die nicht zumindest ein paar dieser Klassen verwenden. Das gilt sogar für das simple Hello-World-Programm: Die Klasse System, ihre Variable out und die Methode println sind Elemente der Standardbibliothek.
Oder, um es anders zu formulieren: Wie Sie selbst Klassen entwickeln, lernen Sie im Kapitel 11, »Klassen und Records«. Klassen bzw. ihre Objekte nutzen müssen Sie in Java aber von Anfang an.
Wie Objekte erzeugt werden, hängt von der jeweiligen Klasse ab. Bei der Mehrheit der Klassen erzeugen Sie mit new Klassenname() ein Objekt. Bei manchen Klassen gibt es aber auch andere Mechanismen.
Weniger Tippaufwand mit »import«
Die Klassen der Standardbibliothek sind in Paketen organisiert. Die Random-Klasse zur Erzeugung von Zufallszahlen befindet sich beispielsweise im Paket java.util. Der vollständige Klassenname lautet somit java.util.Random. In den folgenden Zeilen wird ein Random-Objekt mit new erzeugt und in einer Variablen gespeichert. Die Methode nextInt erzeugt nun Zufallszahlen. println gibt diese aus:
System.out.println("Eine Zufallszahl: " + r.nextInt(100));
Das...