先看一道题,下述代码的输出是什么?
public static void main(String[] args) {
char alpha = 'A';
int foo = 65;
boolean trueExp = false;
System.out.println(trueExp ? alpha : 0);
System.out.println(trueExp ? alpha : foo);
}
答案如下:
A
65
这边简单解释一下原因:
三目表达式中表达式一和表达式二会自动提升到两者中的最高类型。
如第一个语句:System.out.println(trueExp ? alpha : 0);
中的alpha
为char
类型,0
为常量。所以0
被提升为了char
类型变成了\u0000
也就是空格。
第二个语句:System.out.println(trueExp ? alpha : foo);
中的alpha
为char
类型foo
为int
类型,所以alpha
被提升为int
类型,成为了65。
类型提升的图如下:
OK,相信大家都学会了,那下面的代码会输出什么呢?
public static void main(String[] args) {
char alpha = 'A';
double decimal = 123.4d;
int foo = 65;
boolean trueExp = false;
System.out.println(trueExp ? decimal : foo);
}
答案是
65.0
大家一定都答对了吧