天天看點

byte 類型_java知識總結(九):基本類型轉換

基本類型轉換

  1. 自動類型轉換
  2. 強制類型轉換

自動類型轉換

轉換從低級到進階

byte,short,char—> int —> long—> float —> double

資料類型轉換必須滿足如下規則:

  1. 不能對boolean類型進行類型轉換
  2. 不能把對象類型轉換成不相關類的對象
  3. 在把容量大的類型轉換為容量小的類型時必須使用強制類型轉換。
  4. 轉換過程中可能導緻溢出或損失精度
  5. 浮點數到整數的轉換是通過舍棄小數得到,而不是四舍五入
public class Test { public static void main(String[] args) { //byte 自動轉換成 short byte abyte = 10; short ashort = abyte; System.out.println(ashort); //short 自動轉換成 int short ashort2 = 180; int aint = ashort2; System.out.println(aint); //int 自動轉換成 long int aint2 = 100; long along = aint2; System.out.println(along); //long 自動轉換成 float long along2 = 100; float afloat = along2; System.out.println(afloat); //float 自動轉換成 double float afloat2 = 100.00F; double adouble = afloat2; System.out.println(adouble); }}//輸出結果:10180100100.0100.0
           

強制類型轉換

轉換從進階到低級

byte,short,char

public class Test2 { public static void main(String[] args) { //double 強制轉換成 float double adouble = 180.12D; float afloat = (float) adouble; System.out.println(afloat); //float 強制轉換成 long float afloat2 = 180.12f; long along = (long) afloat2; System.out.println(along); //long 強制轉換成 int long along2 = 180; int aint = (int) along2; System.out.println(aint); //int 強制轉換成 short int aint2 = 180; short ashort = (short) aint2; System.out.println(ashort); //short 強制轉換成 byte short ashort2 = 180; byte abyte = (byte) ashort2; System.out.println(abyte); }}//輸出結果:180.12180180180-76
           

由上述内容可知,強制類型轉換有精度的損失。

//分析byte abyte = (byte) ashort2;精度損失的過程short ashort2 = 180;二進制位 0000 0000 1011 0100 short類型轉換成byte類型精度損失變成8位 原碼: 1011 0100反碼: 1100 1011補碼: 1100 1100再由二進制轉換成十進制為-76
           

備注:計算中使用的都是補碼。正數的補碼和原碼一樣;負數的補碼是負數的反碼加1。

byte 類型_java知識總結(九):基本類型轉換

境界有大小,不以是而分優劣。“細雨魚兒出,微風燕子斜”,何遽不若“落日照大旗,馬鳴風蕭蕭”?“寶簾閑挂小銀鈎”,何遽不若“霧失樓台,月迷津渡”也。——王國維

繼續閱讀