public static void main(String[] args) {
Object o=true?new Integer(1):new Double(1.0);
System.out.println(o);
}
我得到 1.0 作为输出,首先是上面的其他声明无法访问,但它是如何自动输入的。
答案 0 :(得分:3)
JLS声明
扩展基元转换(第5.1.2节)用于转换其中一个或两个 操作数由以下规则指定: •如果任一操作数的类型为double,则另一个操作数将转换为double。
表达式
true? Integer(1) : Double(1.0)
因为这里的操作数之一是Double,所以返回类型也是double
答案 1 :(得分:1)
http://docs.oracle.com/javase/specs/jls/se7/html/jls-5.html#jls-5.6
关键字是“数字促销”:
数字促销用于转换数字的操作数 操作符为通用类型,以便可以执行操作。该 两种数字促销是一元数字促销(§5.6.1) 和二进制数字促销(§5.6.2)。
sᴜʀᴇsʜʜ已经给你一个解释你具体例子的链接。