为什么我不能像Java中的if-else语句一样使用(?:)运算符?

时间:2017-10-30 01:21:38

标签: java

我可以使用(?:)运算符定义变量。但是为什么我不能将它用作if-else语句来执行基于条件的语句?

我尝试了以下操作:

char first = queue.remove();
(first == 'W') ? women++ : men++;

但没效果。

2 个答案:

答案 0 :(得分:4)

这称为三元运算符,它会产生表达式,而不是语句。分号遵循陈述。

以下是有效的,因为它既是语句又是表达式(如果foo的返回类型为void,那么它只是一个语句):

foo();

以下内容无效,原因与您的三元运算符示例无效(文字字符串只是表达式)相同:

"xyzzy";

如果要根据布尔值执行一个或另一个语句,请使用if-then语句。如果希望表达式根据布尔值取一个值或另一个值,请使用三元运算符。它们不可互换。

答案 1 :(得分:0)

虽然if-statement允许逻辑代码流,但三元运算符实际上是一个operation,它需要三个操作数。三元运算符导致表达式,而不是语句。