2017-03-06 65 views
3
public static void main(String[] args) { 
    Character x = ' '; 
    while (x++ < 50) { 
     int p = x; 
    } 
    System.out.println(x instanceof Character); 
    } 

因爲它是一元操作++。將x解包到char中,然後在執行操作之前將其擴大爲int。 當我退出循環時,我得到'真'。 我不明白如何可以將int裝入Character中; Java可以讓INT的拳擊成整數或拳擊和加寬INT成數,對象等對一個字符進行一元運算後的拳擊

回答

2

答案(由我重點)位於Java語言規範§15.14.2 Postfix Increment Operator ++

在運行時,如果操作數表達式的求值突然完成 ,則後綴增量表達式對於 突然完成的原因相同,並且不會發生增量。否則,將值1 添加到變量的值中,並將總和存回 該變量。在添加之前,對值1和變量的值執行二進制數字提升(§5.6.2) 。 如果需要 ,則該總和通過縮小原始轉換 (§5.1.3)和/或受到裝箱轉換(§5.1.7)變爲存儲前的變量類型 。後綴增量 表達式的值是存儲的新值爲 之前的變量值。

相關問題