相关疑难解决方法(0)

使用三元运算符和最终变量时出现意外输出

请考虑以下代码段:

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.

如果我们看一下关于三元运算符Java规范,我们发现了

如果其中一个操作数是T类型,其中T是byte,short或char,另一个操作数是int类型的常量表达式,其值可以在类型T中表示,那么条件表达式的类型是T.

所以第一个输出将'X'char视为一个int,这就是它打印的原因88.

但是,我不确定为什么使用final更改第二个输出的行为.

java final ternary-operator

12
推荐指数
1
解决办法
670
查看次数

标签 统计

final ×1

java ×1

ternary-operator ×1