/** * 猜猜输出结果是什么 */public class appalet { public static void main(String[] args) { char x = 'x'; int i = 0; System.out.print(true ? x : 0); System.out.print(false ? i : x); }}/** * 输出:x120 * 原因分析: * System.out.print(false ? i : x) 中 i 是第二个操作数 , x 是第三个操作数 * 其结果隐藏在条件表达式规范[JLS 15.25]中,其中核心有以下三点: * 1.如果第二个操作数和第三个操作数类型相同,那它就是条件表达式的类型.可以避免混合类型计算带来的麻烦 * 2.对于第二个操作数和第三个操作数,其中一个操作数的类型是byte,short或char(用T表示),而另一个操作 * 数为int类型常量表达式,那么条件表达式的类型是T * 3.不符合1和2的情况,条件表达的类型是第二个操作数和第三个操作数中类型大的那一个. */