在Java中,若有如下代码: ``` int x = 5, y = 3; double z = 2.5; Object result = x > y ? (x > z ? x : z) : (y > z ? y : z); System.out.println(result.getClass().getSimpleName()); ``` 输出结果是什么?
答案解析
核心考点:条件运算符的返回类型自动提升机制。
解题思路分析:
1. 先比较x和y,5>3为true,进入第一个条件分支(x>z ? x : z)
2. 比较x(5)和z(2.5),5>2.5为true,返回x(int类型)
3. 由于条件运算符的返回类型需要统一,int和double混合运算时自动提升为double,但此处x是int字面量,z是double类型变量
4. 关键点:表达式(x>z ? x : z)中x是int类型字面量,z是double类型变量,因此整个表达式返回类型为double
5. 最终结果被装箱为Double类型
选项分析:
A. 错误,未考虑类型自动提升
B. 正确,符合条件分支最终返回double类型的逻辑
C. 错误,实际运行时会输出具体包装类型
D. 错误,语法完全合法
易错点提醒:
- 字面量参与条件运算时的类型转换
- 装箱操作的类型保留规则
正确答案:B