15

私はこの構文に出くわしました:

System.out.println(boolean_variable ? "print true": "print false");
  • 2 つのドット : を含むこの構文は何と呼ばれますか?
  • それに関する情報はどこにありますか?
  • ブール値に対してのみ機能しますか、それとも他のさまざまな方法で実装されていますか?
4

11 に答える 11

55

? :条件演算子です。(これは:一部ではありません。メソッド引数全体が、この例の条件演算子の 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();
于 2013-07-04T12:45:07.143 に答える
20

これは条件演算子で、オペランドが 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 番目の値 (コロンの後) を返します。

詳細については、Java 言語仕様の第 15.25 章の条件演算子を参照してください。?

于 2013-07-04T12:45:50.647 に答える
2

ご質問について:

  1. (?:両方の文字を合わせたもの) は、条件演算子 (または三項演算子) と呼ばれます。両方を一緒にしないと機能しません。
  2. Java ternery operator を検索します
  3. ブール値でのみ機能します

原則として、三項演算子は短縮されたif/elseです。がifのboolean条件となり、 と で囲まれた部分が分岐、この後の部分が分岐となり?ます。:ifelse

条件演算子の戻り値の型は、最初のブランチによって決定されることに注意してください

于 2013-07-04T12:46:00.020 に答える
1

これは三項演算子であり、ブール値で機能します。場合によっては if-else の省略形として使用できますが、読みにくいため、複雑すぎるものには使用しないでください。

例は、条件に応じて変数に値を割り当てることです。

String message = doOperation() ? "Success" : "Error occurred";
System.out.println(message);

この場合、doOperation が成功したかどうかを示すブール値を返す場合、表示されるメッセージを 1 行に割り当てることができます。

この例は、適切なプログラミング プラクティスを表すものではないことに注意してください。

于 2013-07-04T12:44:44.207 に答える
1

if-else ステートメントの短縮形です。

このように動作します

(yourCondition ? STATEMENT1 : STATEMENT2)
  • コンパイラは条件をチェックします。
  • IF返されたTRUE後、STATEMENT1実行されます。
  • ELSE STATEMENT2実行されます。
于 2013-07-04T12:57:47.730 に答える
0

ここを参照してください。三項演算子は if 式に似ていますが、式であるという点で異なります。戻り値がありますが、if 式にはありません。コードを少しすっきりさせるために使用したい場合があります。

于 2013-07-04T12:45:13.403 に答える
0

コロン (2 つのドット) が後に続く疑問符は、通常インライン if と呼ばれる三項演算子です。

この場合、boolean_variable の値に応じて文字列を返します。

http://en.wikipedia.org/wiki/%3F :

于 2013-07-04T12:44:50.703 に答える