Kofler | Java | E-Book | sack.de
E-Book

E-Book, Deutsch, 463 Seiten

Reihe: Rheinwerk Computing

Kofler Java

Der Grundkurs
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
Kofler Java jetzt bestellen!

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:

abstract do implements private this
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:

var r = new java.util.Random();
System.out.println("Eine Zufallszahl: " + r.nextInt(100));

Das...



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.