變量相加和常量相加的區別

在java中數值變量相加與數值常量相加存在區別:
變量相加時,可能存在手動強制轉換。
常量相加時,在目標數據範圍內時,在編譯器會直接將相加的值賦予a4生成class文件,若不在目標數據範圍之內,則會出現編譯錯誤(稱之爲常量優化機制)。
例如:

public static void main(String[] args) {
        byte a1 = 4;
        byte a2 = 3;
        byte a3 = (byte) (a1 + a2);
        byte a4 = 4 + 3;
    }

從上述代碼中我們可以看到:
1.變量進行相加的byte類型最終對a3賦值時需要進行強制轉換爲byte類型,原因是byte類型相加時會自動提升爲int類型進行運算。
2.常量相加最終對a4賦值時,是直接賦值,原因是在編譯期時,編譯的過程中檢測到4+3的數值範圍在byte範圍之內,所以就直接可以將值賦予到byte類型的a4中。如果常量相加超過了byte範圍,那麼就需要手動強轉了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章