问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
public static void main(String[] args) {
int i =10;
Object x = i >0 ? 20 :20.00;
System.out.println("x = " + x);
}
运行结果及报错内容
结果返回 20.0 三元运算符类型提升,不应该是转换为范围更大的吗,那应该也是double类型的,怎么是float类型的
public static void main(String[] args) {
int i =10;
Object x = i >0 ? 20 :20.00;
System.out.println("x = " + x);
}
结果返回 20.0 三元运算符类型提升,不应该是转换为范围更大的吗,那应该也是double类型的,怎么是float类型的
三元运算符的结果确实为 double 类型,因为 x 的类型为 Object,因此会自动包装为 Double 类型。
示例代码如下:
public class Test {
public static void main(String[] args) {
int i = 10;
Object x = i > 0 ? 20 : 20.00;
System.out.println("x = " + x);
System.out.println("x type is :"+x.getClass());
}
}
打印结果如下: