私はこの構文に出くわしました:
System.out.println(boolean_variable ? "print true": "print false");
- 2 つのドット : を含むこの構文は何と呼ばれますか?
- それに関する情報はどこにありますか?
- ブール値に対してのみ機能しますか、それとも他のさまざまな方法で実装されていますか?
? :
は条件演算子です。(これは:
一部ではありません。メソッド引数全体が、この例の条件演算子の 1 つの使用法です。)
これはしばしば三項演算子と呼ばれますが、それはその名前ではなく、その性質 (3 つのオペランドを持つ) の側面にすぎません。別の三項演算子が Java に導入されると、用語があいまいになります。他の 2 つのオペランドのどちらを評価するかを決定する条件(最初のオペランド) があるため、条件演算子と呼ばれます。
最初のオペランドが評価され、次に、最初のオペランドが true か falseかに基づいて2 番目または3 番目のオペランドが評価され、それが演算子の結果になります。
だから、このようなもの:
int x = condition() ? result1() : result2();
以下とほぼ同等です。
int x;
if (condition()) {
x = result1();
} else {
x = result2();
}
他のオペランドを評価しないことが重要です。たとえば、これは問題ありません。
String text = getSomeStringReferenceWhichMightBeNull();
int usefulCharacters = text == null ? 0 : text.length();
これは条件演算子で、オペランドが 3 つあるため、三項演算子と呼ばれることがよくあります。例は次のとおりです。
int foo = 10;
int bar = foo > 5 ? 1 : 2; // will be 1
int baz = foo > 15 ? 3 : 4; // will be 4
したがって、boolean
式が と評価された場合true
は最初の値 (コロンの前) を返し、それ以外の場合は 2 番目の値 (コロンの後) を返します。
ご質問について:
?:
両方の文字を合わせたもの) は、条件演算子 (または三項演算子) と呼ばれます。両方を一緒にしないと機能しません。原則として、三項演算子は短縮されたif
/else
です。がifのboolean
条件となり、 と で囲まれた部分が分岐、この後の部分が分岐となり?
ます。:
if
else
条件演算子の戻り値の型は、最初のブランチによって決定されることに注意してください。
これは三項演算子であり、ブール値で機能します。場合によっては if-else の省略形として使用できますが、読みにくいため、複雑すぎるものには使用しないでください。
例は、条件に応じて変数に値を割り当てることです。
String message = doOperation() ? "Success" : "Error occurred";
System.out.println(message);
この場合、doOperation が成功したかどうかを示すブール値を返す場合、表示されるメッセージを 1 行に割り当てることができます。
この例は、適切なプログラミング プラクティスを表すものではないことに注意してください。
if-else ステートメントの短縮形です。
このように動作します
(yourCondition ? STATEMENT1 : STATEMENT2)
IF
返されたTRUE
後、STATEMENT1
実行されます。ELSE
STATEMENT2
実行されます。ここを参照してください。三項演算子は if 式に似ていますが、式であるという点で異なります。戻り値がありますが、if 式にはありません。コードを少しすっきりさせるために使用したい場合があります。
コロン (2 つのドット) が後に続く疑問符は、通常インライン if と呼ばれる三項演算子です。
この場合、boolean_variable の値に応じて文字列を返します。