Java變數 資料型別轉換
阿新 • • 發佈:2021-12-09
即使再小的帆也能遠航
public class Demo01 { public static void main(String[] args){ /* * 低容量----------------------------------->高容量 * byte,short,char-->int-->long-->float-->double * 注意問題: * 1.不能對布林值進行轉換 * 2.不能把物件型別轉換為不相關的型別 * 3.在高容量轉換為低容量時,強制型別轉換 * 4.轉換的時候可能存在記憶體溢位,或者精度問題! * */ //強制型別轉換 高-->低 int i = 12; byte b = (byte)i; System.out.println(i); System.out.println(b); //自動轉換 低-->高 double d = i; //不需要強制轉換 System.out.println(d); //精度問題 System.out.println((int)23.7); //輸出23,丟失小數點後面的資料 //記憶體溢位問題 int money = 10_0000_0000; //JDK新特性,數字之間可以用下劃線分割,不會影響 int years = 20; System.out.println(money); //輸出為1000000000,下劃線並不會輸出,也不會影響 int total1 = years*money; System.out.println(total1); //記憶體溢位,不知道會變成什麼值,要避免 long total2 = years*money; System.out.println(total2); //轉換也不行,轉換之前已經溢位了 long total3 = years*((long)money); System.out.println(total3); //可以解決 //良好習慣:long 型別後面儘量用大寫L,小寫l容易看成數字1 } }
以上程式碼的執行結果:
12
12
12.0
23
1000000000
-1474836480
-1474836480
20000000000