相关疑难解决方法(0)

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

我已经看到它在某处讨论过以下代码导致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,类型objInteger理所应当的.

Object obj = true ? new Integer(200) : new BigDecimal(0.0);

System.out.println(obj);
Run Code Online (Sandbox Code Playgroud)

结果:200


我认为这样做的原因是将左侧投射到a/与比较和计算double相同的方式,但这里左右两侧不会以这种方式相互作用.integerdouble

为什么会这样?

java casting ternary-operator conditional-operator

40
推荐指数
1
解决办法
3062
查看次数