为什么三元运算符会意外地将整数转换类型?
- 论坛
- 为什么三元运算符会意外地将整数转换类型?
17 浏览
为什么三元运算符会意外地将整数转换类型?
我在某个地方看到有人讨论以下代码的结果是obj
是一个Double
,但它从左边打印出200.0
。
Object obj = true ? new Integer(200) : new Double(0.0); System.out.println(obj);
结果:200.0
然而,如果你在右边放一个不同的对象,例如BigDecimal
,obj
的类型是Integer
,正如它应该是的。
Object obj = true ? new Integer(200) : new BigDecimal(0.0); System.out.println(obj);
结果:200
我推测这个原因与将左边强制转换为double
有关,就像integer
/double
的比较和计算一样,但在这里左边和右边并不以这种方式交互。
为什么会这样发生?