🏛️ 1. Grundstruktur eines Java-Programms
In Java ist alles in Klassen organisiert. Der Dateiname muss exakt dem Namen der public class entsprechen (inklusive Groß-/Kleinschreibung):
public class Aufgabe {
// Der Einstiegspunkt für die Java Virtual Machine (JVM)
public static void main(String[] args) {
System.out.println("Willkommen in Java 21 Enterprise!");
}
}
Die main-Methode ist der Generalschlüssel der JVM: public (jeder darf rein), static (das Gebäude muss nicht erst instanziiert werden), void (keine Rückgabe an das Betriebssystem nötig) und String[] args (die Übergabeparameter beim Starten).
🔢 2. Die 8 primitiven Datentypen
Java unterscheidet strikt zwischen primitiven Typen (direkt auf dem Stack gespeichert) und Referenztypen (Objekte auf dem Heap):
| Typ | Größe | Wertebereich | Standardwert | Beispiel |
|---|---|---|---|---|
byte |
8 Bit (1 Byte) | -128 bis 127 | 0 |
byte b = 42; |
short |
16 Bit (2 Byte) | -32.768 bis 32.767 | 0 |
short s = 1024; |
int |
32 Bit (4 Byte) | -2.147.483.648 bis 2.147.483.647 | 0 |
int port = 8080; |
long |
64 Bit (8 Byte) | -9 Trillionen bis +9 Trillionen | 0L |
long timestamp = 1700000000000L; |
float |
32 Bit (4 Byte) | ~6-7 Dezimalstellen | 0.0f |
float pi = 3.14159f; |
double |
64 Bit (8 Byte) | ~15-16 Dezimalstellen (Standard) | 0.0d |
double saldo = 1250.75; |
boolean |
1 Bit / JVM | true oder false |
false |
boolean isProd = true; |
char |
16 Bit (2 Byte) | Unicode (0 bis 65.535) | '\\u0000' |
char grade = 'A'; |
🔄 3. Type Casting: Widening vs. Narrowing
Wenn Werte zwischen Datentypen übergeben werden, unterscheidet Java zwei Fälle:
// 1. Widening Casting (Automatisch/Implizit - kein Datenverlust):
// byte -> short -> char -> int -> long -> float -> double
int kleineZahl = 100;
double kommazahl = kleineZahl; // 100.0 (Automatisch erweitert)
// 2. Narrowing Casting (Manuell/Explizit - möglicher Datenverlust/Überlauf):
// double -> float -> long -> int -> char -> short -> byte
double preis = 99.99;
int gerundet = (int) preis; // 99 (Nachkommastellen werden abgeschnitten!)
// ⚠️ Vorsicht bei Ganzzahl-Division:
int summe = 10;
int anzahl = 4;
double falsch = summe / anzahl; // Ergibt 2.0 (Ganzzahldivision 10/4 = 2!)
double richtig = (double) summe / anzahl; // Ergibt 2.5 (10.0 / 4 = 2.5)
🎯 Aufgaben & Checkliste in Aufgabe.java
Nutze String.format(java.util.Locale.US, "%.1f%%", cpuUsage * 100) für international standardisierte Punktdarstellung bei Fließkommazahlen.