1. 程式人生 > 實用技巧 >java中的型別轉換

java中的型別轉換

型別轉換

  概述:不同型別的資料之間可能會進行運算,而這些資料取值範圍不同,儲存方式不同,直接進行運算可能會造成資料損失,所以需要將一種型別轉成另一種型別再進行運算。

  分類:1.自動(隱式)型別轉換

        小型別轉大型別,自動替身為大型別,運算結果是大型別

        資料型別的範圍從小到大如下:

          byte,short,char--->int(預設的整型)--->long--->float--->double(預設的浮點型)

          boolean型別不參與比較,它的值只有true和false兩個

     2.強制(顯示)型別轉換

        手動將大型別轉換成小型別,運算結果是小型別

        格式:目標型別 變數名=(目標型別)要轉換的值

        注意:強制型別轉換再使用的時候可能會出現精度丟失的問題

  型別關係圖:

意事項:當且僅當大型別資料可以轉換為小型別資料時,才進行轉換,否則會造成精度損失(例:當浮點數(小數)轉換為整數,

浮點數小數點後面的值會丟失)

例:

  如果定義兩個變數,一個為int型,一個為byte型,他們運算的結果是一個int型,所以可以定義一個int變數來進行接收他們的計算的結果

public class d {
    public static void main(String[] args) {
        
//定義的格式:資料型別 變數名=初始值 //定義一個int型別的資料和一個byte型別的資料 int bb=4; byte aa=5; int cc=aa+bb; System.out.println(cc); } }

運算結果為:

9

 但是如果使用byte來接收呢,程式就會報錯,這個錯誤主要是因為當不管是什麼short,byte,還是char型別計算的時候都會轉換成int型別來進行計算,所以在int型別和byte型別計算的時候,會先將byte型別轉換為int型別,結果也是int型別。這個時候如果還是要求資料型別

為byte型別呢?這個時候就需要用到強制型別轉換了,將aa和bb執行的結果強制轉換為byte就可以了。

public class d {
    public static void main(String[] args) {
        //定義的格式:資料型別 變數名=初始值
        //定義一個int型別的資料和一個byte型別的資料
        int bb=4;
        byte aa=5;
        byte cc=(byte)(aa+bb);   //aa和bb的結果為int型別,強制轉換為byte型別
        System.out.println(cc);
    }
}

執行結果為:

9

但是強制型別轉換是不能隨隨便便就執行的,有時候會造成精度丟失的情況,比如將一個浮點數型別的資料強制轉換為一個int型別的資料:

public class d {
    public static void main(String[] args) {
        //定義的格式:資料型別 變數名=初始值
        double dd=5.4;
        int qq=(int)dd;   //強制轉換為整型
        System.out.println(qq);
    }
}

執行結果為:

5