在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
随机推荐
开始刷题