首页 > 试题广场 >

下面程序输出的结果是?public class ExamSa

[不定项选择题]
下面程序输出的结果是?
public class ExamSample {
public static void main(String[] args) {
new ExamSample().convert();
}
public void convert() {
int i = 012;
char a = 'a';
System.out.println((i > 11) ? i : a);
System.out.println((i > 11) ? 65 : a);
System.out.println((i > 11) ? 65.0 : a);
}
}
  • 12,65,65.0
  • 97,a,97.0
  • 97,97,97.0
  • a,a,a
首先,i是一个以0开头的八进制数012
把它转换成十进制: 0 * 8 ^ 3 + 1 * 8 ^ 2 + 2 * 8 ^0 = 10
第二,判断下面三行的输出内容:
1.char类型的a在跟int型的变量做比较时,会被自动提升为int型,所以输出97
2.与a比较的是一个常量表达式,与常量表达式做比较时,输出的内容取决于与之比较的T的类型,在这里是char,所以输出a
3.根据上面的推理,就可以得出,与double类型进行比较时,会被提升为double类型

发表于 2020-08-23 14:04:29 回复(0)
int i=012;012为八进制数,转换成十进制为10
发表于 2018-09-12 21:51:03 回复(0)

1.若三目运算符中的两个表达式有一个是常量表达式,另一个是类型T的表达式,且常量表达式可以被T表示,则输出结果是T类型。

2.如果都是常量表达式,用向上类型转换

发表于 2020-07-04 16:12:19 回复(0)
public class ExamSample {
    public static void main(String[] args) {
        new ExamSample().convert();
    }

    public void convert() {
        int i = 012;
        char a = 'a';
        System.out.println((i > 11) ? i : a);
        System.out.println((i > 11) ? 65 : a);
        System.out.println((i > 11) ? 65.0 : a);
    }
}
发表于 2019-01-23 13:53:33 回复(1)