0

重複の可能性:
Javaとは何ですか?:演算子が呼び出され、それは何をしますか?

バイナリツリーの実装を読み込もうとしていますが、次の1行のコードに遭遇しました。

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

return node;

この行の意味を誰かに教えてもらえますか?私の推測では、これはある種の条件付きステートメントだと思います。

4

2 に答える 2

9

それはと呼ばれ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;
}
于 2012-11-16T04:50:35.617 に答える
3

これは、ほとんどの言語で3つの引数を取る唯一の演算子であるため、三項演算子として知られています。次の形式になります。

a ? b : c

そして、真であるかbどうかを評価します。ほとんどどこでも使用できますが、より複雑な状況では読みにくくなるため、ほとんどの場合、代入演算で使用されます。ac

ちなみに、ここでは「難読化」という用語は適切ではありません。これは、意図的に読みにくくしたコードを意味します。これは一般的な演算子ですが、より正確には「あいまい」と呼ばれる場合があります。

于 2012-11-16T04:52:45.830 に答える