[英]Unexpected output when using a ternary operator and final variable
请考虑以下代码段:
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');
}
运行此代码时,我希望在您的控制台中看到两个X
但是,实际输出是:
88
X
如果其中一个操作数是T类型,其中T是byte,short或char,另一个操作数是int类型的常量表达式,其值可以在类型T中表示,那么条件表达式的类型是T.
所以第一个输出将'X'
X'char视为int
,这就是它打印88
的原因。
但是,我不确定为什么使用final
改变第二个输出的行为。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.