This question already has answers here:
Strange java behaviour with conditional operator. Is it a bug?
(2个答案)
6年前关闭。
我得到1.0作为输出,首先是在else语句之上,但是它是如何自动类型转换的。
因为这里的操作数之一是Double,所以返回类型也是double
(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