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;
}
}