1. 程式人生 > 其它 >第四課,型別轉換

第四課,型別轉換

型別轉換

  • 由於Java是強語言型別,所以要進行有些運算的時候,需要用到型別轉換
低 --------------------------------------> 高(位元組)

byte,short,char-> int-> long-> float-> double
  • 運算中,不同型別的資料先轉化為同一型別,然後進行運算。
  • 強制型別轉換
  • 自動型別轉換

測試

public class demo4 {
    public static void main(String[] args) {
        int i = 128;
        byte b = (byte)i;// -128
        //強制轉換 (型別)變數名 高--低;
        //自動轉換 低--高;
        System.out.println(i);
        System.out.println(b);

        /*
        注意點:
        1.不能對布林值進行轉換;
        2.不能把物件型別轉換為不相干的型別;
        3.在把高容量轉換到低容量的時候,強制轉換;
        4轉換的時候可能存在記憶體溢位,或者精度問題!
         */
        System.out.println("===========================");
        System.out.println((int)23.7);
        System.out.println((int)-45.89F);

        System.out.println("===========================");
        char c ='a';
        int d = c+1;
        System.out.println(d);//輸出98
        System.out.println((char)d);


    }
}

輸出:

128
-128
===========================
23
-45
===========================
98
b

測試:

public class demo06 {
    public static void main(String[] args) {
        //操作比較大的數時,注意溢位問題;
        //JDK7 新特性,數字之間可以用下滑鍵分割;
        int money = 10_0000_0000;
        //System.out.println(money);
        int years = 20;
        int total = money*years;//溢位
        long total2 = money*years;//預設是int ,轉換之前已經出問題了;
        System.out.println(total);//-1474836480
        System.out.println(total2);//還是-1474836480
        long total3 = money*(long)years;
        System.out.println(total3);//200_0000_0000
        //  L  l容易被看成1,最好大寫
    }
}

輸出:

-1474836480
-1474836480
20000000000