超硬核解析!Apache Hudi靈活的Payload機制
阿新 • • 發佈:2022-03-28
資料型別轉換
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
}
}
注意:
-
不能對布林值進行轉換
-
不能將物件型別轉換為不相干的型別(如,貓轉換為狗)
-
轉換的時候可能存在記憶體溢位,或者精度問題
-
高容量向低容量轉換的時候,強制轉換
4 自動型別轉換
適用:低-->高
自動進行,無需操作
5 強制型別轉換問題
- 記憶體溢位
- 精度問題
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);
}
}