Java语句:混淆代码 - `?:`

0 java binary-tree if-statement ternary-operator

可能重复:
什么是Java?:运算符被调用,它做了什么?

我试图阅读二叉树的实现,我遇到了这一行代码:

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

return node;
Run Code Online (Sandbox Code Playgroud)

谁能告诉我这条线的含义是什么?我最好的猜测是,这是某种条件陈述.

Roh*_*ain 9

它被称为Conditional Operator.

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

所以在你的代码片段中: -

node = ( node.left != null ) ? node.left : node.right;
Run Code Online (Sandbox Code Playgroud)

相当于: -

if (node.left != null) {
    node = node.left;
} else {
    node = node.right;
}
Run Code Online (Sandbox Code Playgroud)

  • expression1和expression2将优于statement1和statement2. (2认同)