我在《Java Puzzlers》中发现了以下难题:
public class DosEquis {
public static void main(String[] args) {
char x = 'X';
int i = 0;
System.out.print(true ? x : 0);
System.out.print(false ? i : x);
}
}
我尝试了这段代码并成功运行,但输出结果与我的猜测不符。我猜测的输出应该是:
XX
,但实际输出是:X88
。我尝试了很多次去理解,但我无法理解。有人能给我们解释一下吗?为什么会出现不同的输出结果?我能理解第一个
print()
打印变量char x
的字符值,但第二个print()
打印的是char x
中值的ASCII表示中的88
。如果我像这样简化第二个print()
中的三元运算表达式。if(false){
System.out.print(i);
}else{
System.out.print(x);
}
然后输出结果是XX
,非常奇怪,有人能解决这个问题吗?
对我来说,理解三元运算符将会是很大的帮助。
提前致谢!
System.out.print
方法? - Tassos BassoukosSystem.out.print
,调用了一个带有char
的方法,而对于第二个情况,则是调用了一个带有int
的方法。这就是奇怪的地方,不理解为什么第二个print
调用的是int
数据类型而不是char
数据类型? - Jameer Mulania ? b : c
表达式的类型由什么决定? - Tassos Bassoukos