Java语句:模糊代码-`?:`
可能重复:Java语句:模糊代码-`?:`,java,if-statement,binary-tree,ternary-operator,Java,If Statement,Binary Tree,Ternary Operator,可能重复: 我试图阅读一个二叉树的实现,我遇到了以下一行代码: if (...) { ... } else { node = ( node.left != null ) ? node.left : node.right; //this line } return node; 有人能告诉我这句话的意思吗?我最好的猜测是它是某种条件语句。它被称为条件运算符 在表达式1中?expression2:expression3,expression1返回一个布尔值。如果为true,则
我试图阅读一个二叉树的实现,我遇到了以下一行代码:
if (...) {
...
} else {
node = ( node.left != null ) ? node.left : node.right; //this line
}
return node;
有人能告诉我这句话的意思吗?我最好的猜测是它是某种条件语句。它被称为
条件运算符
在表达式1中?expression2:expression3
,expression1
返回一个布尔值。如果为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
如果a
为真,则计算为b
,否则计算为c
。它几乎可以在任何地方使用,但最常见的是在赋值操作中使用,因为在更复杂的情况下阅读它变得非常困难
另一方面,“模糊化”在这里不是正确的术语——这是指故意使代码难以阅读的代码。这可能更准确地称为“晦涩”,尽管它是一个常见的运算符。太棒了!谢谢你的帮助,再次感谢你的if-then翻译!expression1和expression2将比statement1和statement2更好。@BheshGurung。。对。完成,谢谢:)