我已经看到它在某处讨论过以下代码导致obj成为a Double,但它200.0从左侧打印.
Object obj = true ? new Integer(200) : new Double(0.0);
System.out.println(obj);
Run Code Online (Sandbox Code Playgroud)
结果:200.0
但是,如果您在右手边放一个不同的对象,例如BigDecimal,类型obj是Integer理所应当的.
Object obj = true ? new Integer(200) : new BigDecimal(0.0);
System.out.println(obj);
Run Code Online (Sandbox Code Playgroud)
结果:200
我认为这样做的原因是将左侧投射到a/与比较和计算double相同的方式,但这里左右两侧不会以这种方式相互作用.integerdouble
为什么会这样?