1.先看以下代碼
public classMain {
? ? ?public static void main(String[] args) {
? ? ?byte a =4;
? ? ?byte b =6;
? ? ?byte c = a + b;
}
}
以上代碼在編譯過程中就會報錯。
2.分析:
為什么byte a = 4;就不會報錯?
因為byte是一個字節,八個二進制位,此時其范圍為-128 ~ +127,所以4在其范圍內,所以可以被賦值。一旦這個數值超過了127,那么編譯就會報錯了。
為什么byte c = a + b;就報錯呢?
這是java的機制導致的,java在對byte這種類型進行“運算”時,會將其轉換為int類型,兩個int類型相加,賦值給byte類型肯定會報錯的。
為什么byte = 3 + 4;又不會報錯呢?
跟第一個一樣,3+4是常量的計算,會優先執行,執行結果再賦值給byte,此時判斷數值是否滿足該類型范圍,滿足就直接賦值了。
3.總結
兩個變量相加,先對類型進行提升,然后運算,再將運算結果賦值。
兩個常量相加,先計算常量數值,然后判斷是否滿足類型范圍,再賦值。