Java的表达式自动类型提升
在表达式中,小范围类型的变量,会自动转换成表达式中较大范围的类型,再参与运算。
类型高低表:byte,short,char---->int---->long---->float---->double(依次递增)
tips:
1.表达式的最终结果类型由表达式中的最高类型决定。
2.在表达式中,byte,short,char是直接转换成int参与运算的。
例子:
1.在下面这份代码中add的返回类型是double,即遵循“在表达式中,小范围类型的变量,会自动转换成表达式中较大范围的类型,再参与运算。”
public class HelloWorld {
public static void main(String[] args) {
System.out.println(add(1,2,'c',5.0));// 输出107.0
}
public static double add(int a,int b,char c,double t) {
return a+b+c+t;
}
}
2. 在下面这份代码遵循tips2"在表达式中,byte,short,char是直接转换成int参与运算的。"
public class HelloWorld {
public static void main(String[] args) {
System.out.println(add(1,2,'c',5.0));//输出107.0
System.out.println(add2((byte)1,(byte)2));//输出3
System.out.println(add2((byte)1,(byte)3));//输出4
}
public static double add(int a,int b,char c,double t) {
return a+b+c+t;
}
public static int add2(byte a,byte b) { //返回类型是byte就会报错
return a+b;
}
public static byte add3(byte a,byte b) {
return (byte)(a+b); //要想返回byte类型,就必须需要强制转换
}
}