Jika shortsecara otomatis dipromosikan ke intdalam operasi aritmatika, mengapa:
short thirty = 10 * 3;
Penugasan hukum untuk shortvariabel thirty?
Selanjutnya, ini:
short ten = 10;
short three = 3;
short thirty = ten * three; // DOES NOT COMPILE AS EXPECTED
serta ini:
int ten = 10;
int three = 3;
short thirty = ten * three; // DOES NOT COMPILE AS EXPECTED
tidak dapat dikompilasi karena menetapkan intnilai ke a shorttidak diperbolehkan tanpa melakukan cast seperti yang diharapkan.
Apakah ada sesuatu yang istimewa tentang literal numerik?
10 * 3dan menginisialisasi variabel dengan hasilnya. Dalam contoh non-kerja Anda, penghitungan terjadi pada waktu proses di mana JVM mentransmisikan short.
final int ten = 10; final int three = 3; short thirty = ten * three;mengkompilasi dengan baik.
If short is automatically promoted to int in arithmetic operations- itu tidak relevan. Baik 10atau 3yang celana pendek mereka juga tidak dipromosikan, mereka literal.
10dan 3dievaluasi sebagai intoleh kompilator?
short thirty = 10 * 3;kemungkinan besar digantikan olehshort thirty = 30;kompiler yang kemudian merupakan pernyataan yang valid. (Saya harus mencari bagian JLS yang relevan).