三元运算符。真是空的

时间:2015-11-11 21:11:00

标签: java if-statement ternary-operator

我想知道这个代码在三元运算符

中是怎么样的
if (a) {
    // pass
} else {
    b(); 
}

当a为真时,我们没有(事物)代码执行,但如果a为假,则有一些代码b()然后执行。

所以我们写下:

a ? : b();

但是当你让代码为真空或者你必须用某些东西替换它时,我不确定这是否正确。实际上我从不使用三元运算符,但我们被要求这样做。

3 个答案:

答案 0 :(得分:7)

这不是条件运算符的用途......它不执行一个语句或另一个,它是评估一个表达式或其他,并将其作为表达式的结果。

您应该将代码编写为:

if (!a) {
    b();
}
  

实际上我从不使用三元运算符,但我们被要求这样做。

如果你被要求为这种特殊情况这样做,那么我会非常警惕那些要求你这样做的人。我的猜测实际上并不是这种情况......

答案 1 :(得分:2)

如果您尝试过此代码,那么您将遇到编译器错误,因为三元运算符需要表达式而不是语句。 true部分甚至没有表达式或语句。如果b()返回void,则false部分是语句,而不是表达式。如果b()返回某些内容,那么它可以被视为表达式,它就可以了。

如果要执行语句,并且不必选择表达式值,则在三元运算符上选择if / else。您的第一个if / else可以简化为:

if (!a)
{
    b();
}

答案 2 :(得分:1)

这是不可能的。摘自官方Oracle Docs:

http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.25

  

条件运算符? :使用一个表达式的布尔值   决定应该评估两个其他表达式中的哪一个。

ConditionalExpression:
    ConditionalOrExpression
    ConditionalOrExpression ? Expression : ConditionalExpression

"三元"的定义是"由3部分组成"。如果您只想对一个条件进行一次评估,那么您只需要使用if语句。