本文介紹了Java中的類型轉換機制。主要內容包括:1) Java是強類型語言,不同類型運算時需要轉換;2) 類型轉換分為強制轉換(高轉低)和自動轉換(低轉高);3) 強制轉換可能導致內存溢出或精度損失;4) 布爾值不能轉換,對象類型不能轉不相干類型;5) 大數運算時要注意溢出問題,可通過提前轉換類型解決;6) JDK7支持數字用下劃線分割提高可讀性。文中通過多個代碼示例演示了類型轉換的具體應用和注意事項。

類型轉換

  • 由於java是強類型語言,所以要進行有些運算的時候,需要用到類型轉換。

低————————————————————————————————>>高

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

============================================================================

問:怎麼進行轉換?

答:在變量的前面加上一個()中間寫類型就可以了。

例:

public class Demo05{
    public static void main(String[] args){
        int i = 128;
        byte b = (byte)i;
        
        System.out.println(i);
        System.out.println(b);
        
    }
}

輸出

128
-128

進程已結束,退出代碼為 0

================================================================================

隨堂代碼:

public class Demo05 {
    public static void main(String[] args) {
        int i = 128;
        byte b = (byte)i;//內存溢出
        //byte對應的類Byte最大值為127賦值128就會出問題。
        //byte,short,char,int,long,float,double
        //低--------------------------->>高
        //強制轉換   (類型)變量名  高-->低

        int i1 = 128;
        double b1 = i1;
        //自動轉換                低-->高

        int i2 = 128;
        //boolean b2 = i2;//報錯
        
        System.out.println(i);
        System.out.println(b);
        System.out.println(i1);
        System.out.println(b1);
        System.out.println(i2);
        //System.out.println(b2);

        /*
        注意點:
        1.不能對布爾值進行轉換
        2.不能把對象類型轉換為不相干類型
        3.在把高容量轉換到低容量的時候,強制轉換
        4.轉換的時候可能存在內存溢出,或者精度問題!
         */

        System.out.println("====================================");
        System.out.println((int)23.7);//23,小數點後數值丟失,精度有影響
        System.out.println((int)-45.89f);//-45,小數點後數值丟失,精度有問題

        System.out.println("====================================");
        char c = 'a';
        int d = c+1;
        System.out.println(c);
        System.out.println(d);
        System.out.println((char) d);//高轉低強制轉換

    }

}

輸出:

128
-128
128
128.0
128
====================================
23
-45
====================================
a
98
b

進程已結束,退出代碼為 0

隨堂代碼:

public class Demo06 {
    public static void main(String[] args) {
        //操作比較大的數的時候,注意溢出問題
        //JDK7新特性,數字之間可以用下劃線分割
        int money = 10_0000_0000;//輸出1000000000,下劃線不會被輸出
        System.out.println(money);//輸出1000000000,下劃線不會被輸出

        int years = 20;
        int total = money*years;//-1474836480,計算的時候溢出了
        long total2 = money*years;
        System.out.println(total);//-1474836480,計算的時候溢出了
        System.out.println(total2);//-1474836480,
        //更換long沒用,years和money默認是int,計算完成後會轉化為int,所以結果會轉變為int
        //轉換之前已經存在問題了
        //解決辦法
        long total3 = money*((long)years);//先把一個數轉換為long
        System.out.println(total3);//20000000000

        //大寫L和小寫l的區別,有些代碼把小寫l看成數字1

        long jia = 10_0000_0000L;//數字後大寫L表示用的long
        System.out.println(jia+1);


    }
}

輸出:

1000000000
-1474836480
-1474836480
20000000000
1000000001

進程已結束,退出代碼為 0

本文介紹了Java中的類型轉換機制。主要內容包括:1) Java是強類型語言,不同類型運算時需要轉換;2) 類型轉換分為強制轉換(高轉低)和自動轉換(低轉高);3) 強制轉換可能導致內存溢出或精度損失;4) 布爾值不能轉換,對象類型不能轉不相干類型;5) 大數運算時要注意溢出問題,可通過提前轉換類型解決;6) JDK7支持數字用下劃線分割提高可讀性。文中通過多個代碼示例演示了類型轉換的具體應用和注意事項。