Java学习之数据类型的转换

34 阅读2分钟

1、思考

什么是自动类型转换?为什么要进行自动类型转换?

范围类型小的变量,可以直接赋值给类型范围大的变量。
赋值变量:byte --> short&char --> int --> long -->float --> double

public class TypeDemo1 {
    public static void main(String[] args) {
        // 认识自动类型转换 和 强制类型转换  
        byte a = 10;  
        printVariable(a);
        printVariable2(a);
    }
    public static void printVariable(int b ) {
        System.out.println(b);
    }
  
    public static void printVariable2(double c) {
        System.out.println(c);
    }
}
public class TypeDemo1 {
    public static void main(String[] args) {
        // 认识自动类型转换 和 强制类型转换  
        byte a = 10;  
        printVariable(a);
        printVariable2(a);
    }
    public static void printVariable(int b ) {
        System.out.println(b);
    }
  
    public static void printVariable2(double c) {
        System.out.println(c);
    }
}

2、自动类型转换在计算机中的执行原理

a 00001100 8位
b 0001100 32位

二、强制类型转换

1、思考

类型范围大的变量无法直接赋值给类型范围小的变量,但是需要注意的是,强转有可能会导致返回数据不准确,也就是数据溢出,这也是为什么官方不默认强转的原因之一。

浮点型强转成整数类型,直接丢掉小数部分,保留整数部分并返回。

2、语法格式

变量 变量2 = (类型) 变量1;

3、原理

底层位数导致的,后面补充拓展。

三、表达式的自动类型提升

1、定义

在表达式里,小范围类型的变量,会自动转换成表达式中较大范围的类型,再参与运算。
byte/short/char–>int --> long -->float --> double

2、注意

表达式中,最终结果由表达式中的最高类型决定。
在表达式中,byte short char 是直接转换成int类型参与运算。

3、示例

public class TypeDemo3 {  
    public static void main(String[] args) {  
        // 理解表达式的自动类型提升  
        System.out.println(calc(10, 20, 30.0, 'a'));  
    }  
    //接受各种类型的数据运算  
    public static double calc(int a,int b ,double c,char r) {  
        double v = a + b + c + r;  
        return v;  
    }  
}