天天看點

Java資料類型自動轉換(++ ,+=)

Java資料類型自動轉換(++ ,+=)

在算術表達式中的自動類型轉換

  • 資料從類型範圍小的自動向資料範圍大的轉換
  • 整數向浮點數轉換(包括long類型向float轉換)
    • 例子:
      Java資料類型自動轉換(++ ,+=)
  • char類型的範圍内與整數之間轉換依據ASCII表
強制轉換會丢失精度,尤其是超過資料範圍和整數與浮點數的轉換

在指派表達式中的自動類型轉換

  • 先看兩個例子
    Java資料類型自動轉換(++ ,+=)
Java資料類型自動轉換(++ ,+=)
- 這裡的m+2L就是上面的自動類型轉換,在執行加法時就成了long類型,是以是long類型的2147483649(已經超出了int的範圍)
- num+1也是自動類型轉換,在執行加法時就成了int類型,是以是int類型的128(已經超出了byte的範圍)
           
  • 再來看++的情況
    Java資料類型自動轉換(++ ,+=)
    • 這裡沒有發生自動類型轉換嗎,是有的,而且還有強制類型轉換。如果隻是

      num = num + 1

      是會産生編譯錯誤的,是以這裡還有預設的強制類型轉換

      num = (byte) (num+1)

      ,是以結果被截取為byte類型,變成了-128。
  • +=情況類似
    Java資料類型自動轉換(++ ,+=)
    • m+=2L

      可以看做

      m=(int)(m+2L)

      ,強制類型轉換為int,變成-2147483647