หาก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 ที่เกี่ยวข้อง)