int a=5;
(a<5)?10.9:9的结果为什么是9.0?
答案解释是java会根据运算符的精度类型自动类型转换
可这个解释我觉得还没理解!
哪位大神能帮我解释下?
------解决方案--------------------
(a<5)?10.9:9 首先会编译不通过,这个题目稍微给你扩展下:
public float get() {
int a = 5;
return a>5?10.9:9;
}
你说这个方法的返回值是9还是9.0 ,如果返回类型是int的话,10.9那里也会报告错误,编译不通过
------解决方案--------------------
根据答案的解释,我想这道题的原型是这样的:
public class Test {
public static void main(String[] args) {
int a = 5;
System.out.println(a<5 ? 10.9 : 9);
}
}
关键在a>5 ? 10.9 :9段代码,就是答案所解释的那样。
Java在进行多种数据类型混合运算的时候,会进行自动转换,转化遵循一定的规则,其中一条就是“容量小的类型自动转换成容量小的类型”,本例中有int,double,所以在运算的过程中,首先将5转换成5.0,将9装换成9.0,然后进行运算,结果为9.0