本文轉載自http://blog.csdn.net/wang740209668/article/details/57416778
一般來說,在運算的時候,要求參與運算的數據的類型須一致,這就好比我們能用1+1進行運算,而不能用1+a進行運算,而在java中更爲嚴格,同爲數值的數字有byte short int long 四種不同的類型,它們在運算的時候也要求類型一致,如果不一致,就涉及到我們今天要說的類型轉換。
默認轉換:
- class TypeConvert
- {
- public static void main(String[] args){
- // 類型一致 直接運算
- int a = 1;
- int b = 2;
- System.out.println(a+b);
- // 類型不一致 默認轉換 按道理講 c+d=3 是沒有超出byte 範圍的
- // 但當我們用byte接收的時候,編譯報錯 可能損失精度。說明此時
- // e 不是byte類型,而運算的過程中byte c默認轉換爲 int c
- // 此時 結果 e 也是int類型了 ,我們需要用 int 接收
- byte c = 1;
- int d = 2;
- //byte e = c+d; 是int不是byte
- int e = c+d;
- System.out.println(e);
- // byte 和 byte 結果也是 int
- byte x = 1;
- byte y = 2;
- //byte z = x+y;
- int z = x+y;
- System.out.println(z);
- }
- }
默認轉換順序(從小到大,向上轉型):
byte short char ->int->long->float->double
byte short char 運算時轉換爲int ,運算中有long類型則結果是long類型,有double類型,結果是double類型。
byte short char 相互之間不轉換,它們運算時先轉換爲int類型。
/*
這一段爲轉載後插入
short s = 1;
s+=1;//不報錯
//s = s+1;//報錯 int不能複製給short
就是這個原因。+=不會提升數據類型 先+再賦值會
基本數據類型的字節大小如下:
*/
強制轉換(從大到小,向下轉型):
格式 目標數據類型 變量 = (目標數據類型) 數據;
- class TypeConvert
- {
- public static void main(String[] args){
- byte a = 1;
- byte b = 2;
- // 強制類型轉換
- byte c = (byte)(a+b);
- System.out.println(c);
- }
- }