Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java语句:模糊代码-`?:`_Java_If Statement_Binary Tree_Ternary Operator - Fatal编程技术网

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。。对。完成,谢谢:)