Java資料型別的顯式轉換和隱式轉換

huijigo發表於2020-09-23

隱式轉換:
 下面程式碼是以下意思:兩個byte資料型別進行運算,結果為int資料型別。

先說結論:
  (byte,short)<int<long<float<double;
  一個運算只涉及byte,short時,結果就會轉換成int;
  如果涉及到其他運算,按照上面的關係結果轉換成大的資料型別。
  下面是一些程式碼例項

public class TypeWay {
    public static void main(String[] args) {
        byte b1 = 1, b2 = 2;
        System.out.println(getType(b1+b2));
    }
    public static String getType(Object a){
        return a.getClass().toString();
    }
}

執行結果:class java.lang.Integer

 下面程式碼的意思是:一個byte資料型別和一個short資料型別運算,結果為int資料型別。

public class TypeWay {
    public static void main(String[] args) {
        byte b1 = 1;
        short b2 = 2;
        System.out.println(getType(b1+b2));
    }
    public static String getType(Object a){
        return a.getClass().toString();
    }
}

結果為:class java.lang.Integer

下面的程式碼意思是:一個int和long資料型別運算,結果為long資料型別。

public class TypeWay {
    public static void main(String[] args) {
        int b1 = 1;
        long b2 = 2;
        System.out.println(getType(b1*b2));
        System.out.println("go and try");
    }
    public static String getType(Object a){
        return a.getClass().toString();
    }
}

結果為:class java.lang.Long

下面程式碼的意思是:一個int資料型別和double資料型別運算,運算結果doule資料型別。

public class TypeWay {
    public static void main(String[] args) {
        int b1 = 1;
        double b2 = 2.0;
        System.out.println(getType(b1*b2));
        System.out.println("go and try");
    }
    public static String getType(Object a){
        return a.getClass().toString();
    }
}

結果為:class java.lang.Double

下面的程式碼意思是:一個float和double資料型別運算,結果為double資料型別。

public class TypeWay {
    public static void main(String[] args) {
        float b1 = 1.0f;
        double b2 = 2.0;
        System.out.println(getType(b1*b2));
        System.out.println("go and try");
    }
    public static String getType(Object a){
        return a.getClass().toString();
    }
}

結果為:class java.lang.Double

顯示轉換
直接在資料前面加上你的轉換資料型別的相應函式即可。但是不支援將高階資料型別轉換成低階的資料型別。

下面是一些例項:
高資料型別不能轉換成高資料型別。

public class TypeWay {
    public static void main(String[] args) {
        int b1 = 1;
        int b2 = 2;
        System.out.println(getType((byte)b1*b2));

    }
    public static String getType(Object a){
        return a.getClass().toString();
    }
}

結果是:class java.lang.Integer

低資料型別轉換成高資料型別:

public class TypeWay {
    public static void main(String[] args) {
        int b1 = 1;
        int b2 = 2;
        System.out.println(getType((long)b1*b2));

    }
    public static String getType(Object a){
        return a.getClass().toString();
    }
}

結果是:class java.lang.Long

相關文章