Klausur-Tricks
Trick 1, Cast macht Truncation, kein Round: (int) 3.99 = 3, NICHT 4. Für Round: Math.round().
Trick 2, Integer-Division bei int / int: 5 / 2 in Java = 2. Mindestens ein Operand muss double sein für 2.5.
Trick 3, Zahlen-Literale kennen:
- Java:
5 ist int, 5L ist long, 5.0 ist double, 5f ist float
- Python:
5 ist int, 5.0 ist float (kein Unterschied long/int)
Trick 4, parseInt bei Whitespace/Komma: Java NumberFormatException, Python int() trimmt Whitespace aber kein Komma.
Trick 5, Auto-Widening Reihenfolge (Java):
byte → short → int → long → float → double
char → int → ...
Trick 6, Boolean-Konversion:
- Java: kein Auto-Cast Zahl ↔ boolean. Brauchst
x != 0 explizit.
- Python: 0/leer = False, alles andere = True (truthiness)
Trick 7, Floor vs. Truncation bei negativen Zahlen:
(int) -3.5 = -3 (Truncation, Richtung 0)
Math.floor(-3.5) = -4 (Floor, Richtung minus unendlich)
Trick 8, Overflow bei Cast:
int big = 300;
byte small = (byte) big; // -56 (!)
byte hat nur 8 Bit (-128 bis 127). 300 passt nicht → bit-Überschneidung. Kein Compile-Fehler, sondern Bug zur Laufzeit.
Trick 9, Konkatenation vs. Addition (Java):
String s = "Wert: " + 1 + 2; // "Wert: 12"
String t = "Wert: " + (1 + 2); // "Wert: 3"
Java wertet von links aus. Erste Konkatenation (String + int) wandelt int zu String, danach wird als String-Operator (Konkatenation) interpretiert.
Trick 10, Vergleich Strings vs. Zahlen:
"5" == 5 // Compile-Fehler in Java
"5" == 5 # False (verschiedene Typen, kein Auto-Cast)
"5" == str(5) # True
Wo brauchst du Casting?
- User-Input: Konsole liefert immer String, Zahl muss geparsed werden
- JSON / API: Werte aus dem Netz oft als String, müssen konvertiert werden
- Datenbanken: SQL liefert manchmal Strings (vor allem aus Free-Text-Feldern)
- Datei-I/O:
fs.readFile liefert String, Zahlen in CSV/TXT brauchen Parse
- Mathematische Operationen: Float-Division statt Integer-Division
- Type-Annotation in TypeScript:
as Type ist eine Type Assertion zur Compile-Zeit, keine Laufzeit-Umwandlung. Für echte Konvertierung brauchst du z. B. Number(value), String(value) oder eigenes Parsing.
Faustregel: an jeder Sprach-/System-Grenze (Konsole, Datei, Netzwerk, DB) brauchst du Cast. Innerhalb deines eigenen Codes weniger.