2

Javaで次のようなものを使用できることを私は知っています:

(a > b) ? a : b;

else 部分がないだけで似たようなものはありますか?

4

3 に答える 3

13

これはステートメントではなく式です。つまり、常に何かに評価されます。「else 部分」がなければ、テストが false の場合に評価される式は何もありません。だから、いいえ、他のものなしでは何も似ていません。

条件演算子の使用について私が気に入っているのは、次のようなものを割り当てることができることです

foo =  a > b ? c : d;

それを読むと、テストが真かどうかに関係なく、foo に何かが割り当てられていることがわかります。したがって、何らかのテストに依存する値が割り当てられていることを示す方法が提供されます。

Groovy には類似した演算子がいくつかあります。

?:Elvis 演算子である は、左側の式が null の場合、右側の値をデフォルトとして割り当てます。

?.セーフヌル演算子である は、左側が null と評価される場合、null と評価されます。これは、null の可能性があるもののチェーンがある場合に便利です。foo?.bar?.bazたとえば、何かが null の場合に NPE で爆破したくないが、すべての null チェックを入力したくない場合です。

于 2013-02-20T22:11:29.707 に答える
3

これを使用してvarに値を割り当てると推測しています。これを「c」と呼びます。ifステートメントがtrueの場合にのみ値を割り当てたいという考えです。通常の方法は次のとおりです。

if(a > b) c = a;

しかし、本当に三項構文を使用したい場合は、次のように書くことができます。

c = a > b ? a : c;

三項親はオプションであるため、省略していることに注意してください。

于 2013-02-20T22:22:20.610 に答える
3

いいえ、ありません。それは意味がありません。

?:三項比較演算子 - 式です。もしelseステートメントがなかったら、式の値はどうなるでしょうか? C# には簡略版??がありますが、それは単なる構文糖衣であり、Java にはそのようなものはありません。

于 2013-02-20T22:11:51.893 に答える