这个terenary操作的含义是什么?

时间:2015-09-12 15:04:48

标签: java c operators conditional ternary

请参考以下方法:

public static Boolean valueOf(boolean b) {
    return b ? Boolean.TRUE : Boolean.FALSE;
}

我一直认为三元运算符的第一部分必须是一个条件,但在这里它是一个返回语句而我感到困惑。

4 个答案:

答案 0 :(得分:3)

像这样阅读

return (b ? Boolean.TRUE : Boolean.FALSE);

现在更有意义吗?您只是决定要返回什么,具体取决于条件b的价值。

答案 1 :(得分:1)

相当于:

if(b)
return Boolean.TRUE 
else
return Boolean.FALSE

答案 2 :(得分:1)

(布尔值)b条件。你能指望什么? 表达不是必需的

答案 3 :(得分:1)

Wikipedia建议以下解释:

  

在计算机科学中,三元运算符(有时被错误地称为第三运算符)是一个带三个参数的运算符。参数和结果可以是不同的类型。许多使用类似C语法的编程语言都有一个三元运算符?:,它定义了一个条件表达式。

不仅在Java中,这种语法也可以在PHP中使用。

在下面的link中,它给出了以下解释,这对于理解它很安静:

  

三元运算符是在3个输入上运行的一些操作。它是if-else语句的快捷方式,也称为条件运算符。

     

在Perl / PHP中,它的工作原理如下:
boolean_condition?true_value:false_value

     

在C / C ++中,它的作用如下:
logical expression? action for true : action for false

对于某些不太复杂的逻辑条件,这可能是可读的,否则最好将If-Else块与条件逻辑的预期组合一起使用。

我们可以使用此Ternary运算符为一个代码语句行简化If-Else块。例如:

if ( car.isStarted() ) {
     car.goForward();
} else {
     car.startTheEngine();
}

可能等于以下内容:

( car.isStarted() ) ? car.goForward() : car.startTheEngine();

因此,如果我们参考您的方法:

public static Boolean valueOf(boolean b) {
    return b ? Boolean.TRUE : Boolean.FALSE;
}

实际上是100%相当于以下内容:

public static Boolean valueOf(boolean b) {
    if (b == Boolean.TRUE) {
        return Boolean.TRUE;
    } else {
        return Boolean.FALSE;
    }
}

那就是它!
希望这对某人有帮助!
干杯!