1. 程式人生 > 其它 >Java變數 資料型別轉換

Java變數 資料型別轉換

即使再小的帆也能遠航

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