Java 关于三目运算符的一个细节

皮康龙发布

我们首先来看一道题,问下面的代码输出是什么:

Object o1 = true ? new Integer(1) : new Double(2.0);
System.out.println(o1);

答案是「1.0」。

原因在于三目运算符要求表达式 2 和表达式 3 的类型一致,当不一致时,就会进行类型提升,「小」的数据类型就会往「大」的数据类型转。

Java 对于数值型的数据类型「大小」关系为 byte < short < int < long < float < double。

因此,Integer(1) 在这里被提升为了 Double(1),调用了 Double 类重写的 toString 方法,故输出为 1.0。


0 条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注