1. 程式人生 > 其它 >【java】short、byte、char進行運算時的注意點

【java】short、byte、char進行運算時的注意點

先來看以下程式碼

可以看到兩個 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的資料型別。