谁能解释第一个输出?(java运算符)


public static void main(String[] args) {
char alpha = 'A';
int foo = 65;
boolean trueExp = true;
System.out.println(trueExp ? alpha : 0);
System.out.println(trueExp ? alpha : foo);
}
run result:A
65

我不知道第一个输出是A。谁能解释?非常感谢。

来自JLS 15.25.2:

如果其中一个操作数[条件?:运算符]的类型为T,其中Tbyteshortchar,而另一个操作是int类型的常量表达式(§15.29(,其值可在T类型中表示,则条件表达式的类型为T

System.out.println(trueExp ? alpha : 0);

alphachar0是具有常数表达式的int,该常数表达式可由char表示,因此条件表达式的结果是char

System.out.println(trueExp ? alpha : foo);

这里,foo不是一个常量表达式,因此操作数将经过二进制数字提升为int,因此它打印(int) alpha65

如果您要声明final int foo,它将再次打印A(Ideone演示(。

最新更新