Jika short
secara otomatis dipromosikan ke int
dalam operasi aritmatika, mengapa:
short thirty = 10 * 3;
Penugasan hukum untuk short
variabel 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 int
nilai ke a short
tidak diperbolehkan tanpa melakukan cast seperti yang diharapkan.
Apakah ada sesuatu yang istimewa tentang literal numerik?
10 * 3
dan 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 10
atau 3
yang celana pendek mereka juga tidak dipromosikan, mereka literal.
10
dan 3
dievaluasi sebagai int
oleh 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).