a) long aLongVar = 10 + 20;
b) int bIntVar = 20; long bLongVar = 10 + bIntVar;
c) long cLongVar1=20; long cLongVar2 = 10 + cLongVar1;
d) long dLongBar1 = 20; long dLongVar2 = (long) 10 + dLongVar1;
e) double eDoubleVar = 10.5 + 19.5f;
f) double fDoubleVar=10.5f + 19.5f;
g) byte gByteVar = (byte) (10 + 20) ;
h) double hDoubleVar = 10.5 + 20;
Lösungen:
a) Ganzzahlige numerische Wert werden in Java stets als int interpretiert, d.h. die Summe auf der rechten Seite wird zunächst einmal ein int-Wert. Dieser wird impliziert in einen long konvertiert, weil dabei kein Datenverlust droht.
b) Hier gilt das Gleiche wie zuvor. Der einzige Unterschied ist, dass ein numerischer Wert auf eine int-Variable addiert wird. Die Summe ist auch hier ein int.
c) Die Addition eines int-Wertes mit einem 1ong-Wert ergibt einen long, die 10 wird also implizit in einen 1ong konvertiert. Das Ergebnis kann ohne weitere Umwandlung einer long-Variablen zugewiesen werden.
d) Dieses Beispiel entspricht im Ergebnis dem Quelltext aus dem vorherigen Beispiel. Allerdings wird die 10 hier explizit in einen 1ong konvertiert.
e) Fließkomma-Literale werden von Java stets als double interpretiert, d.h auf der rechten Seite der Gleichung wird 19.5 explizit zu float umgewandelt und anschließend zu einem double addiert. Dabei wird der float implizit wieder zu einem double zurückkonvertiert und die Summe somit auch ein double.
f) Hier werden beide Summanden auf der rechten Seite der Gleichung explizit zu float umgewandelt, sodass auch die Summe zunächst ein float-Wert ist. Bei der Zuweisung auf eine double-Variable wird allerdings eine implizite Typumwandlung von float nach double vorgenommen..
g) Die Summe innerhalb der Klammern ist zunächst ein int-Wert, der explizit auf ein byte umgewandelt wird.
h) Vor der Addition mit einem doub1e wird der int-Wert zunächst implizit in einen double umgewandelt. Die Summe ist deshalb auch ein doub1e und kann einer double-Variablen zugewiesen werden.