为什么三元运算符意外地转换整数?
我看到在某处讨论过,下面的代码导致成为 ,但它从左侧打印。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
为什么会发生这种情况?