我已经看到它在某处进行了讨论,下面的代码导致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进行比较和计算时所用的方式有关,但此处左右两侧并不以这种方式相互作用。
为什么会这样?
哔哔one
慕村9548890