请考虑以下代码段:
public static void main(String[] args) {
int z1 = 0;
final int z2 = 0;
System.out.println(false ? z1 : 'X');
System.out.println(false ? z2 : 'X');
}
Run Code Online (Sandbox Code Playgroud)
运行此代码时,我希望X在您的控制台中看到两个代码.但是,实际输出是:
88
X.
如果其中一个操作数是T类型,其中T是byte,short或char,另一个操作数是int类型的常量表达式,其值可以在类型T中表示,那么条件表达式的类型是T.
所以第一个输出将'X'char视为一个int,这就是它打印的原因88.
但是,我不确定为什么使用final更改第二个输出的行为.