当前位置: 代码迷 >> J2SE >> 请求详解这道面试题解决办法
  详细解决方案

请求详解这道面试题解决办法

热度:91   发布时间:2016-04-23 20:28:14.0
请求详解这道面试题
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
  相关解决方案