可能重复:
什么是 Java ?: 运算符,它有什么作用?
我正在尝试阅读二叉树的实现,并且遇到了这一行代码:
if (...) {
...
} else {
node = ( node.left != null ) ? node.left : node.right; //this line
}
return node;
谁能告诉我这条线是什么意思?我最好的猜测是它是某种条件语句。
可能重复:
什么是 Java ?: 运算符,它有什么作用?
我正在尝试阅读二叉树的实现,并且遇到了这一行代码:
if (...) {
...
} else {
node = ( node.left != null ) ? node.left : node.right; //this line
}
return node;
谁能告诉我这条线是什么意思?我最好的猜测是它是某种条件语句。
它被称为Conditional Operator
。
在expression1 ? expression2: expression3
中,expression1
返回一个boolean
值。如果它是true
然后expression2
被评估,否则expression3
被评估。
所以在你的代码片段中: -
node = ( node.left != null ) ? node.left : node.right;
相当于: -
if (node.left != null) {
node = node.left;
} else {
node = node.right;
}
这被称为三元运算符,因为在大多数语言中,它是唯一接受 3 个参数的运算符。它具有以下形式:
a ? b : c
并评估b
是否a
为真,c
否则。它几乎可以在任何地方使用,但最常用于赋值操作,因为它在更复杂的情况下变得非常难以阅读。
在旁注中,“混淆”在这里不是正确的术语 - 这意味着故意使代码难以阅读。这可能更准确地称为“模糊”,尽管它是一个常见的运算符。