が算術演算でshort
自動的に昇格さint
れる場合、その理由は次のとおりです。
short thirty = 10 * 3;
short
変数への正当な割り当てthirty
?
次に、これ:
short ten = 10;
short three = 3;
short thirty = ten * three; // DOES NOT COMPILE AS EXPECTED
これと同様に:
int ten = 10;
int three = 3;
short thirty = ten * three; // DOES NOT COMPILE AS EXPECTED
にキャストしないint
とaに値を割り当てることができないため、コンパイルshort
は行われません。
数値リテラルについて何か特別なことはありますか?
10 * 3
は変数を計算し、結果を初期化します。実際に機能しない例では、JVMがshortをキャストする実行時に計算が行われます。
final int ten = 10; final int three = 3; short thirty = ten * three;
正常にコンパイルされることに注意してください。
If short is automatically promoted to int in arithmetic operations
-それは関係ありません。どちら10
も3
ショートパンツはあるも、彼らが推進している、彼らはリテラルじゃないんです。
10
と3
として評価されているint
コンパイラによってsの?
short thirty = 10 * 3;
ほとんどのshort thirty = 30;
場合、有効なステートメントであるコンパイラによって置き換えられます。(ただし、関連するJLSセクションを調べる必要があります)。