java中的型別轉換

你的镁偷走了我的锌發表於2024-10-19

一、自動型別轉換

1.在java中,變數參與運算的時候會自動提升資料型別

byte,short,char -> int -> long -> float -> double

二、強制型別轉換

1.語句格式:

目標資料型別 變數名=(目標資料型別)要轉型的變數值或者表示式

public class DataTypeDemo2 {
    public static void main(String[] args) {
        //哪句是編譯失敗的呢?為什麼呢?
//        byte b1=3,b2=4,b; //不推薦這麼定義
        //工作的時候,推薦一個變數定義佔用一行
        byte b1=3;
        byte b2=4;
        byte b;
//        b=b1+b2; // 如果是變數參與運算,會先自動型別轉換,做完運算後,再判斷是否可以進行賦值
        //強制型別轉換
        b=(byte)(b1+b2);
        System.out.println(b);
//        b=3+4; // 如果是常量參與運算,會先進行運算,運算後,會判斷結果是否在範圍內,如果在直接賦值


    }
}

2.注意事項:

使用可能會有風險,精度丟失

public class DataTypeDemo3 {
    public static void main(String[] args) {
        byte b = (byte)130; // 無法直接賦值,原因是130超過了byte的最大範圍,需要強制型別轉換
        System.out.println(b); // -126


    }
}

/*
    計算機中的資料都是採用補碼進行運算的
    130的補碼:00000000 00000000 00000000 10000010

    做強制型別轉換:
    補碼:  (00000000 00000000 00000000) 10000010
    補碼:   10000010
    已知補碼求原碼:
            符號位      數值位
    補碼:    1        0000010
    反碼:    1        0000001
    原碼:    1        1111110
    -----------------------------
           64 + 32 + 16 + 8 + 4 + 2 = 126
           因為符號位是1,所以最終的結果是-126
 */

相關文章