Java中的基本數據類型類型提升現象

本文轉載自http://blog.csdn.net/wang740209668/article/details/57416778

一般來說,在運算的時候,要求參與運算的數據的類型須一致,這就好比我們能用1+1進行運算,而不能用1+a進行運算,而在java中更爲嚴格,同爲數值的數字有byte short int long 四種不同的類型,它們在運算的時候也要求類型一致,如果不一致,就涉及到我們今天要說的類型轉換。

默認轉換:

  1. class TypeConvert  
  2. {  
  3.     public static void main(String[] args){  
  4.        // 類型一致 直接運算   
  5.       int a = 1;  
  6.       int b = 2;  
  7.       System.out.println(a+b);  
  8.       // 類型不一致 默認轉換 按道理講 c+d=3 是沒有超出byte 範圍的  
  9.       // 但當我們用byte接收的時候,編譯報錯 可能損失精度。說明此時  
  10.       // e 不是byte類型,而運算的過程中byte c默認轉換爲 int c  
  11.       // 此時 結果 e 也是int類型了 ,我們需要用 int 接收  
  12.       byte c = 1;  
  13.       int d = 2;  
  14.       //byte e = c+d; 是int不是byte  
  15.       int e = c+d;  
  16.       System.out.println(e);  
  17.       // byte 和 byte 結果也是 int  
  18.       byte x = 1;  
  19.       byte y = 2;  
  20.       //byte z = x+y;  
  21.       int z = x+y;  
  22.       System.out.println(z);  
  23.     }  
  24. }  


默認轉換順序(從小到大,向上轉型):

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

    就是這個原因。+=不會提升數據類型 先+再賦值會

    基本數據類型的字節大小如下:

  boolean  8bit/1byte
      byte      8bit/1byte
      char      16bit/2byte
      short     16bit/2byte
  float      32bit/4byte
      int        32bit/4byte
      long      64bit/8byte
      double  64bit/8byte

*/

強制轉換(從大到小,向下轉型):

格式   目標數據類型  變量 = (目標數據類型) 數據;

  1. class TypeConvert  
  2. {  
  3.     public static void main(String[] args){  
  4.       byte a = 1;  
  5.       byte b = 2;  
  6.       // 強制類型轉換  
  7.       byte c = (byte)(a+b);  
  8.       System.out.println(c);  
  9.     }  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章