1. 程式人生 > 其它 >超硬核解析!Apache Hudi靈活的Payload機制

超硬核解析!Apache Hudi靈活的Payload機制

資料型別轉換

Java是強型別語言,因此在進行有些運算時,需要用到資料型別轉換。

1 分類

  • 強制型別轉換
  • 自動型別轉換

2 轉換規則

運算時,不同的資料型別要先轉換為同一型別,然後進行運算。

低 ----------------------------------------------> 高
byte,short,char--> int --> long --> float --> double

PS:

問:float 取值範圍比Long型別小,為啥排在long型別前呢?

答:小數的優先順序一定大於整數。

3 強制型別轉換

適用:高-->低

語法:(型別)變數名

public class T {
    public static void main(String[] args) {
        //字元使用unicode字符集
        char c='a';
        int d =c+1;
        System.out.println(d); //98
        System.out.println(d); //b
    }
}

注意:

  1. 不能對布林值進行轉換

  2. 不能將物件型別轉換為不相干的型別(如,貓轉換為狗)

  3. 轉換的時候可能存在記憶體溢位,或者精度問題

  4. 高容量向低容量轉換的時候,強制轉換

4 自動型別轉換

適用:低-->高

自動進行,無需操作

5 強制型別轉換問題

  1. 記憶體溢位
  2. 精度問題
public class T {
    public static void main(String[] args) {
        //強制轉換 (型別)變數名
        int i=128;
        byte b = (byte)i;//記憶體溢位。輸出結果異常
        System.out.println(i);
        System.out.println(b);//輸出結果異常
        
        //精度丟失
        System.out.println((int)3.14);// 3
        System.out.println((int)6.66f);// 6
    }
}

操作大數溢位問題

public class T {
    public static void main(String[] args) {
        //操作比較大的數時,注意溢位問題
        int money = 10_0000_0000;
        int years = 20;
        int total = money * years;//-1474836480,計算的時候記憶體溢位
        long total2 = money * years;//記憶體溢位,轉換前已出問題
        long total3 = money * ((long) years);//計算之前先把一個數轉換為 Long 型別
        System.out.println(total3);
    }
}