DataType01

 

  
  
  
  
  1. /*  
  2.     關於基本數據類型轉換規則:  
  3.         1. 8種基本數據類型除boolean類型以外均可以相互轉換.  
  4.         2. 小容量向大容量轉換叫作自動類型轉換:  
  5.                 byte<short<int<long<float<double  
  6.                      char<  
  7.         3. byte,short,char作混合運算的時候,各自都先轉換成int在作運算  
  8.           
  9.         4.大容量向小容量轉換是強制類型轉換,須要增強制轉換符,  
  10.         編譯雖然經過,運行期可能損失精度。謹慎使用。  
  11.           
  12.         5.若是整數沒有超出byte,short,char的取值範圍,能夠直接將這個整數賦值給byte,short,char  
  13.           
  14.         6.多種數據類型作混合運算,先轉換成容量最大的那種再作運算。  
  15. */ 
  16.  
  17. public class DataTypeTest06 {  
  18.       
  19.     public static void main(String[] args) {  
  20.           
  21.         //出現錯誤,1000超出了byte的範圍  
  22.         //byte a = 1000;  
  23.           
  24.         //正確,由於20沒有超出byte範圍  
  25.         //因此賦值  
  26.         byte a = 20;  
  27.           
  28.         //變量不能重名  
  29.         //short a =  1000;  
  30.           
  31.         //正確,由於數值1000沒有超出short類型的範圍  
  32.         //因此賦值正確  
  33.         short b =  1000;  
  34.           
  35.         //正確,由於默認就是int,而且沒有超出int範圍  
  36.         int c = 1000;  
  37.           
  38.         //正確,能夠自動轉換  
  39.         long d = c;  
  40.           
  41.         //錯誤,出現精度丟失問題,大類型-->>小類型會出現問題  
  42.         //int e = d;  
  43.           
  44.         //將long強制轉換成int類型  
  45.         //由於值1000,沒有超出int範圍,因此轉換是正確的  
  46.         int e = (int)d;  
  47.           
  48.         //由於java中的運算會會轉成最大類型  
  49.         //而10和3默認爲int,因此運算後的最大類型也是int  
  50.         //因此是正確的  
  51.         int f = 10/3;     
  52.           
  53.         //聲明10爲long類型  
  54.         long g = 10;  
  55.           
  56.         //出現錯誤,多個數值在運算過程當中,會轉換成容量最大的類型  
  57.         //如下示例最大的類型爲double,而h爲int,因此就會出現大類型(long)到小類型(int)  
  58.         //的轉換,將會出現精度丟失問題  
  59.         //int h = g/3;  
  60.           
  61.         //能夠強制轉換,由於運算結果沒有超出int範圍  
  62.         //int h = (int)g/3;  
  63.           
  64.         //能夠採用long類型來接收運算結果  
  65.         //long h = g/3;  
  66.           
  67.         //出現精度損失問題,如下問題主要是優先級的問題  
  68.         //將g轉換成int,而後又將int類型的g轉換成byte,最後byte類型的g和3運算,那麼  
  69.         //它的運算結果類型就是int,因此int賦值給byte就出現了精度損失問題  
  70.         //byte h = (byte)(int)g/3;  
  71.           
  72.         //正確  
  73.         //byte h = (byte)(int)(g/3);              
  74.           
  75.         //不能轉換,還有由於優先級的問題  
  76.         //byte h = (byte)g/3;     
  77.           
  78.         //能夠轉換,由於運算結果沒有超出byte範圍  
  79.         //byte h = (byte)(g/3);  
  80.           
  81.         //能夠轉換,由於運算結果沒有超出short範圍  
  82.         short h = (short)(g/3);  
  83.           
  84.         short i = 10;  
  85.           
  86.         byte j = 5;  
  87.           
  88.         //錯誤,short和byte運算,首先會轉換成int再運算  
  89.         //因此運算結果爲int,int賦值給short就會出現精度丟失問題  
  90.         //short k = i + j;  
  91.           
  92.         //能夠將運算結果強制轉換成short  
  93.         //short k = (short)(i + j);  
  94.           
  95.         //由於運算結果爲int,因此能夠採用int類型接收  
  96.         int k  = i + j;  
  97.           
  98.         char l = 'a';  
  99.         System.out.println(l);  
  100.           
  101.         //輸出結果爲97,也就是a的ascii值  
  102.         System.out.println((byte)l);  
  103.           
  104.         int m = l + 100;  
  105.         //輸出結構爲197,取得a的ascii碼值,讓後與100進行相加運算  
  106.         System.out.println(m);  
  107.           
  108.     }  
  109. }  
相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息