หาก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โดยคอมไพเลอร์หรือไม่?
short thirty = 10 * 3;ส่วนใหญ่อาจถูกแทนที่ด้วยshort thirty = 30;คอมไพเลอร์ซึ่งเป็นคำสั่งที่ถูกต้อง (ฉันต้องค้นหาส่วน JLS ที่เกี่ยวข้อง)