【java】short、byte、char進行運算時的注意點
阿新 • • 發佈:2021-12-31
先來看以下程式碼
可以看到兩個 short 型變數相加結果卻為 int 型,這是為什麼呢?
因為 Java 中精度小於 int 的數值運算的時候都回被自動轉換為 int 後進行計算。
我們來看下以下幾個例子:
例一
short o1 = 1;
byte o2 = 2;
short result = (short) (o1 + o2);
精度小於 int 的數值運算的時候都回被自動轉換為 int 後進行計算,(o1+o2)是 int 型別,高位轉低位需進行強制轉換。
從低到高:byte、short、char ——>int——>long——>float——>double
例二
short s = 1;
s = s + 1; //出錯
s += 1; //執行通過
這是因為 (s + 1)會將 s 轉換和 1 一樣的資料型別(int),再相加,這時候結果就是 int 型,高位轉低位需要進行強制轉換。正確的方式是 s = (short) s + 1;
而 s+=1 之所以正確,是因為其中有隱含的強制型別轉換,Java 語言規範中關於複合賦值的解釋是這樣的:E1 op=E2 等價於 E1=(T)(E1 op E2),這裡的T是E1的資料型別。