在算術表示式中的自動型別轉換
-
資料從型別範圍小的自動向資料範圍大的轉換
-
整數向浮點數轉換(包括long型別向float轉換)
- 例子:
- 例子:
-
char型別的範圍內與整數之間轉換依據ASCII表
強制轉換會丟失精度,尤其是超過資料範圍和整數與浮點數的轉換
在賦值表示式中的自動型別轉換
- 先看兩個例子
-
這裡的m+2L就是上面的自動型別轉換,在執行加法時就成了long型別,所以是long型別的2147483649(已經超出了int的範圍)
- num+1也是自動型別轉換,在執行加法時就成了int型別,所以是int型別的128(已經超出了byte的範圍)
-
再來看++的情況
- 這裡沒有發生自動型別轉換嗎,是有的,而且還有強制型別轉換。如果只是
num = num + 1
是會產生編譯錯誤的,所以這裡還有預設的強制型別轉換num = (byte) (num+1)
,所以結果被擷取為byte型別,變成了-128。
- 這裡沒有發生自動型別轉換嗎,是有的,而且還有強制型別轉換。如果只是
-
+=情況類似
m+=2L
可以看做m=(int)(m+2L)
,強制型別轉換為int,變成-2147483647
至此,若有紕漏,望各位不吝賜教