public  class   Conditional{
public  static  void  main(String  args[  ]){
int  x=4;
System.out.println(“value  is  “+ ((x>4) ? 99.9 :9));
}
}
请问这个程序的结果为什么是9.0,而不是9呢?

解决方案 »

  1.   

    =====以下是个人猜测============
    取99.9,和9之间精度较大的输出。
    相当于:
    System.out.println(“value is “+ ((x>4) ? 99.9 :(double)9));
      

  2.   

    /** 
    * 基本类型的自动提升 

    * 自动提升的规则如下: 

    * 如果两个操作数中有一个是double类型,则系统先将另一个操作数转换为double类型,然后运算,否则 
    * 如果两个操作数中有一个是float类型,则系统先将另一个操作数转换为float类型,然后运算,否则 
    * 如果两个操作数中有一个是long类型,则系统先将另一个操作数转换为long类型,然后运算,否则 
    * 所有的操作数都被转换为int类型进行运算(低于int类型的会自动提升) 

    * 如果采用"+=","*="等缩略形式的运算符,则系统会强制将运算结果转换为目标变量类型。 

    */ 看完这个应该可以明白的
      

  3.   

    类型转换了,int和float 转float;
    float和double转double ;
      

  4.   

    这是java中基本类型优先级的转换,低的可以自动转换成高的