谁能解释第一个输出?(java运算符)
我不知道第一个输出是A。谁能解释?谢谢大家! 来自: 如果[条件?:运算符]的一个操作数是谁能解释第一个输出?(java运算符),java,operator-keyword,ternary,Java,Operator Keyword,Ternary,我不知道第一个输出是A。谁能解释?谢谢大家! 来自: 如果[条件?:运算符]的一个操作数是T类型,其中T是byte,short或char,而另一个操作数是int类型的常量表达式(§15.29),其值可在T类型中表示,那么条件表达式的类型是T alpha是一个char,0是一个int的常量表达式,该常量表达式可由char表示,因此条件表达式的结果是一个char System.out.println(trueExp ? alpha : 0); 这里,foo不是一个常量表达式,因此操作数将经过二进制
T
类型,其中T
是byte
,short
或char
,而另一个操作数是int
类型的常量表达式(§15.29),其值可在T
类型中表示,那么条件表达式的类型是T
alpha
是一个char
,0
是一个int
的常量表达式,该常量表达式可由char
表示,因此条件表达式的结果是一个char
System.out.println(trueExp ? alpha : 0);
这里,foo
不是一个常量表达式,因此操作数将经过二进制数字升级为int
,因此它将打印(int)alpha
,65
如果要声明
final int foo
,它将再次打印A
。Josh Bloch和Neal Gafter在Java拼图中解释了这一点。第一个println
中的表达式返回alpha
。如果不是alpha
的值,您还希望它打印什么?@FedericoklezCulloca大概是65
,就像第二个一样。对不起。。。脑衰竭。
System.out.println(trueExp ? alpha : 0);
System.out.println(trueExp ? alpha : foo);