我在某处看到有讨论说下面的代码会导致obj
成为一个Double
,但是它从左侧打印出200.0
。
我曾经看到有人讨论以下代码,表示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
的比较和计算中发生的那样,但在这里左侧和右侧没有以这种方式交互。
为什么会这样?
obj.getClass()
显示为Double
时,真的让我感到惊讶。这是怎么回事啊,伙计。 - G_H