Якщо в арифметичних операціях 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 передає короткий.
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).