为什么三元运算符会意外地将整数转换类型?

17 浏览
0 Comments

为什么三元运算符会意外地将整数转换类型?

我在某个地方看到有人讨论以下代码的结果是obj是一个Double,但它从左边打印出200.0

Object obj = true ? new Integer(200) : new Double(0.0);
System.out.println(obj);

结果:200.0


然而,如果你在右边放一个不同的对象,例如BigDecimalobj的类型是Integer,正如它应该是的。

Object obj = true ? new Integer(200) : new BigDecimal(0.0);
System.out.println(obj);

结果:200


我推测这个原因与将左边强制转换为double有关,就像integer/double的比较和计算一样,但在这里左边和右边并不以这种方式交互。

为什么会这样发生?

0