Java数据类型的显式转换和隐式转换

(Java8无法实现以下代码,建议使用Java14)

隐式转换:
 下面代码是以下意思:两个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
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页