Beim expliziten Casting muss im Code ein Ausdruck für die Typumwandlung angegeben werden: (int), (float), …
Beim impliziten Casting ist das nicht der Fall. Die Typumwandlung wird vom Compiler ausgeführt, ohne dass im Code ein Ausdruck für die Typumwandlung angegeben wird.
Bei primitiven Datentypen erfolgt ein impliziter Cast, wenn einem größeren Datentyp ein kleinerer zugewiesen wird.
Es gilt: byte < short < int < long < float < double.
Arithmetische Operationen werden mindestens mit dem Typ int durchgeführt. Berechnungen mit byte oder short haben also den Typ int als Ergebnis.
Beispiel:
int i = 123; long l = i; // implizit int i2 = (int) l; // explizit short s1 = 2, s2 = 3, s3; s3 = (short) (s1 + s2); // expliziter Cast notwendig, weil (s1 + s2) vom Typ int ist