Wenn short
automatisch auf int
in arithmetischen Operationen gefördert, warum ist dann:Warum ist "short thirty = 3 * 10" eine legale Aufgabe?
short thirty = 10 * 3;
Eine rechtliche Zuordnung zum short
Variable thirty
?
wiederum folgt aus:
short ten = 10;
short three = 3;
short thirty = ten * three; // DOES NOT COMPILE AS EXPECTED
sowie das:
int ten = 10;
int three = 3;
short thirty = ten * three; // DOES NOT COMPILE AS EXPECTED
nicht kompilieren, weil ein int
Wert zu einem short
Zuordnung ist nicht erlaubt, ohne wie erwartet zu Gießen.
Gibt es etwas besonderes über numerische Literale?
'short dreißig = 10 * 3;' wird sehr wahrscheinlich durch 'short 30 = 30;' durch den Compiler ersetzt, was dann eine gültige Aussage ist. (Ich müsste allerdings den relevanten JLS Abschnitt nachschlagen). – Thomas
Der Compiler berechnet '10 * 3' und initialisiert die Variable mit dem Ergebnis. In Ihrem nicht funktionierenden Beispiel findet die Berechnung zur Laufzeit statt, wo die JVM die Abkürzung abgibt. – Felix
Nicht ganz ein Betrogener. Dies ist mehr über Kompilierzeitliterale. – Bathsheba