1. 程式人生 > >數據類型自動轉換

數據類型自動轉換

類型 錯誤 字節 ole src 完成 int boolean 運算

為什麽要數據類型轉換?

Java程序中要求參與的計算的數據,必須要保證數據類型的一致性,如果數據類型不一致將發生類型的轉換。

自動轉換

特點:自動完成,無需幹預

規則:將 取值範圍小的類型 自動提升為 取值範圍大的類型 。

代碼舉例:

public class Demo01DataType {
    public static void main(String[] args) {
        int i = 1;
        byte b = 2;
        // byte x = b + i; // 報錯
        //int類型和byte類型運算,結果是int類型.因為byte會自動提升為int類型
int j = b + i; // long類型 賦值給float類型,也符合數據範圍從小到大 float f = 5656L; System.out.println(j); } }

轉換原理圖解

技術分享圖片

轉換規則:

  • 範圍小的類型向範圍大的類型提升, byte、short、char 運算時直接提升為 int 。
  • 數據範圍由小到大依次為byte、short、char‐‐>int‐‐>long‐‐>float‐‐>double

強制轉換

特點:人工幹預,強制完成

規則:將 取值範圍大的類型 強制轉換成 取值範圍小的類型 。

轉換格式:數據類型 變量名 = (數據類型)被轉數據值

代碼舉例:

public class Demo02DataType {
    public static void main(String[] args) {
        //short類型變量,內存中2個字節
        short s = 1;
              /*
                s = s + 1;出現編譯失敗
                s和1做運算的時候,1是int類型,s會被提升為int類型
                s+1後的結果是int類型,將結果在賦值會short類型時發生錯誤
                short內存2個字節,int類型4個字節
                必須將int強制轉成short才能完成賦值
            
*/ s = (short) (s + 1);//編譯成功 // int i = 2.5; 編譯失敗 int i = (int) 2.5; //編譯成功 } }

轉換原理圖解

技術分享圖片

強烈註意:

  • 浮點轉成整數,直接取消小數點,可能造成數據損失精度。不推薦使用
  • int 強制轉成 short 砍掉2個字節,可能造成數據丟失,數據溢出。
  • boolean類型的不能發生數據類型轉換

數據類型自動轉換