1. 程式人生 > 實用技巧 >Java中int和short的轉化

Java中int和short的轉化

例子[1]

第一種情況:

short a = 1;
a = a + 1;    // 這一步會報錯
System.out.print(a);

編譯器會報錯,原因如下:

第二種情況:

short a = 1;
a += 1;
System.out.print(a);

這種情況不會報錯。
java語言規範中關於複合賦值的解釋是這樣的:E1 op= E2等價於
E1=(T)(E1 op E2),這裡的T是E1的資料型別,即複合賦值是自帶了隱式的強制型別轉換的

第三種情況:

short a = 1;
short b = 1;
short c = a + b;

這種情況依然會編譯出錯,因為Java中存在的型別升級

,導致兩個short型別的運算也會轉換成int進行。

型別升級

在Java中,對基本資料型別做比較或者運算時,如果兩邊的資料型別不同,在可以比較的前提下會首先進行型別升級

  • 如果任一方為double,則另一方轉換為double
    • 否則如果任一方為float,則另一方轉換為float
      • 否則如果任一方為long,則另一方轉換為long
        • 否則兩邊都會轉換為int

即從高到低分別為double,float,long,int
即使是兩個short型別運算,也會轉換成int進行,這就是前面第三種情況出現錯誤的原因。


    1. 參考https://blog.csdn.net/allenjay11/article/details/78613862

      ↩︎