This question already has answers here:
Strange java behaviour with conditional operator. Is it a bug?
                                
                                    (2个答案)
                                
                        
                                6年前关闭。
            
                    
public static void main(String[] args) {
  Object o=true?new Integer(1):new Double(1.0);
  System.out.println(o);
 }


我得到1.0作为输出,首先是在else语句之上,但是它是如何自动类型转换的。

最佳答案

JLS指出


  扩展原始转换(第5.1.2节)适用于转换一个或两个
  由以下规则指定的操作数:
  •如果一个操作数的类型为double,则另一个将转换为double。


在表达中

true? Integer(1) : Double(1.0)


因为这里的操作数之一是Double,所以返回类型也是double

10-07 19:17
查看更多