【问题标题】:What is this meaning of this terenary operation? [duplicate]这个三元运算符是什么意思? [复制]
【发布时间】:2015-12-09 00:10:15
【问题描述】:

请参考以下方法:

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

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

【问题讨论】:

  • return 关键字只是说“返回以下表达式的值”。现在,你能理解下面的表达吗?

标签: java c operators conditional ternary


【解决方案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 块与条件逻辑的预期组合一起使用。

我们可以用这个三元运算符为一个代码语句行简化 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;
    }
}

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      相当于:

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

      【讨论】:

        【解决方案4】:

        这样读

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

        现在更有意义了吗?你只是决定返回什么,这取决于你的条件b

        【讨论】:

          猜你喜欢
          • 2013-07-30
          • 1970-01-01
          • 1970-01-01
          • 2016-05-03
          • 2016-03-07
          • 2012-07-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多