Kurz: // Interface, Record, Enum, sealed interface Form { double flaeche(); } record Punkt(int x, int y) {} enum Tag { MO, DI, MI } sealed interface S permits A, B {}
Teil des Kurses Java
Primitive Typen
| Typ | Größe | Bereich |
|---|---|---|
byte | 8 Bit | -128 bis 127 |
short | 16 Bit | -32.768 bis 32.767 |
int | 32 Bit | ±2,1 Milliarden |
long | 64 Bit | ±9,2 · 10¹⁸ (Literal 10L) |
float | 32 Bit | ca. 7 Stellen (3.5f) |
double | 64 Bit | ca. 15 Stellen |
char | 16 Bit | ein UTF-16-Zeichen ('A') |
boolean | true / false |
Wichtige Klassen aus der Standardbibliothek
| Klasse | Zweck |
|---|---|
String, StringBuilder | Text |
Math | Mathematik: abs, max, min, pow, sqrt, round, floor, ceil, random |
Integer, Double, Boolean, Character | Wrapper und Umwandlung (parseInt, valueOf) |
Arrays, Collections, Objects | Hilfsmethoden |
List, ArrayList, Set, HashSet, Map, HashMap, Deque, ArrayDeque | Collections |
Optional | ”vielleicht ein Wert” |
LocalDate, LocalDateTime, Duration, Instant | Datum und Zeit |
Files, Path | Dateien |
Scanner | Eingabe |
Random, ThreadLocalRandom | Zufallszahlen |
Thread, ExecutorService, CompletableFuture | Nebenläufigkeit |
Stream, Collectors | Datenströme |
Syntax-Überblick
// Klasse, Konstruktor, Methode
public class Person {
private final String name;
public Person(String name) { this.name = name; }
public String getName() { return name; }
}
// Interface, Record, Enum, sealed
interface Form { double flaeche(); }
record Punkt(int x, int y) {}
enum Tag { MO, DI, MI }
sealed interface S permits A, B {}
// Generics
<T extends Comparable<T>> T max(List<T> l) { ... }
// Lambda und Methodenreferenz
Function<Integer, Integer> f = x -> x * 2;
list.forEach(System.out::println);
// Ausnahmen
try { ... } catch (IOException | RuntimeException e) { ... } finally { ... }
try (var r = Files.newBufferedReader(p)) { ... }
// Schleifen
for (int i = 0; i < n; i++) { }
for (var x : liste) { }
while (bedingung) { }
// switch-Ausdruck
String s = switch (tag) { case MO, DI -> "früh"; default -> "spät"; };Befehle
| Befehl | Zweck |
|---|---|
java Datei.java | kleine Datei direkt ausführen |
javac Datei.java | übersetzen |
java Klasse | Klasse starten |
java -jar app.jar | JAR starten |
jshell | interaktive Konsole |
javadoc | Dokumentation erzeugen |
mvn test, mvn package | Maven |
gradle build | Gradle |
Häufige Ausnahmen
| Ausnahme | Ursache |
|---|---|
NullPointerException | Zugriff auf null |
ArrayIndexOutOfBoundsException | falscher Index |
ClassCastException | falscher Cast |
NumberFormatException | ungültige Zahl im Text |
IllegalArgumentException | falsches Argument |
IllegalStateException | falscher Zustand |
ArithmeticException | z. B. Division durch 0 |
ConcurrentModificationException | Liste während der Iteration geändert |
IOException | Ein-/Ausgabefehler (checked) |
StackOverflowError | zu tiefe Rekursion |
OutOfMemoryError | kein Speicher mehr |
Checkliste für eigene Klassen
- Felder
privateund möglichstfinal - Konstruktor prüft Eingaben
equals,hashCode,toStringbei Bedarf (oderrecord)- Nach außen Interfaces und unveränderliche Sichten
- Javadoc für öffentliche Methoden
- Tests für Normal-, Grenz- und Fehlerfälle
Weiterlernen
- dev.java und die offizielle Dokumentation (docs.oracle.com)
- Spring Boot für Webdienste, JavaFX für Oberflächen, Android mit Kotlin/Java
- Bücher: “Java ist auch eine Insel” (Christian Ullenboom, online frei), “Effective Java” (Joshua Bloch)
- Üben mit Aufgaben auf Exercism, Codewars, Advent of Code
Quiz zur Selbstkontrolle
Welcher Befehl startet eine einzelne Quelldatei direkt (ab Java 11)?
- java Datei.java (richtig)
- javac Datei.java
- run Datei.java
- jar Datei.java
Welche Ausnahme ist checked?
- IOException (richtig)
- NullPointerException
- IllegalArgumentException
- ArithmeticException
Womit erzeugst du eine unveränderliche Datenklasse am kürzesten?
- record (richtig)
- abstract class
- interface
- enum
Weiter im Kurs
Zurück: Sauberer Java-Code und häufige Fehler
Alle Kapitel: Java im Überblick