【问题标题】:Java statements: Obfuscated code - `?:` [duplicate]Java 语句:混淆代码 - `?:` [重复]
【发布时间】:2012-11-04 19:51:12
【问题描述】:

可能重复:
What is the Java ?: operator called and what does it do?

我正在尝试读取二叉树的实现,我遇到了这一行代码:

if (...) {
   ...
} else {
    node = ( node.left != null ) ? node.left : node.right;    //this line
}

return node;

谁能告诉我这条线是什么意思?我最好的猜测是它是某种条件语句。

【问题讨论】:

    标签: java if-statement binary-tree ternary-operator


    【解决方案1】:

    它被称为Conditional Operator

    expression1 ? expression2: expression3 中,expression1 返回一个boolean 值。如果是true,则评估expression2,否则评估expression3

    所以在你的代码 sn-p 中:-

    node = ( node.left != null ) ? node.left : node.right;
    

    相当于:-

    if (node.left != null) {
        node = node.left;
    } else {
        node = node.right;
    }
    

    【讨论】:

    • 太棒了!感谢您的帮助,再次感谢 if-then 的翻译!
    • expression1 和 expression2 会比 statement1 和 statement2 更好。
    • @BheshGurung .. 对。完成谢谢:)
    【解决方案2】:

    这被称为 三元运算符,因为在大多数语言中,它是唯一接受 3 个参数的运算符。它的形式为:

    a ? b : c
    

    如果a 为真,则评估为b,否则评估为c。它几乎可以在任何地方使用,但最常用于赋值操作,因为它在更复杂的情况下变得非常难以阅读。

    附带说明,“混淆”在这里不是正确的术语——它是指故意使代码难以阅读的代码。这可能更准确地称为“晦涩难懂”,尽管它是一种常见的运算符。

    【讨论】:

      猜你喜欢
      • 2012-11-19
      • 2021-03-30
      • 1970-01-01
      • 2013-01-29
      • 2013-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-03
      相关资源
      最近更新 更多