10

質問は単純です、Javaで有名なiifの機能的な同等物がありますか?

例えば:

IIf (vData = "S", True, False)

前もって感謝します。

4

4 に答える 4

25
vData.equals("S") ? true : false

またはこの特定のケースでは、明らかに1つだけ書くことができます

vData.equals("S")
于 2011-01-13T20:38:33.430 に答える
6

ええ、三項演算子? :

vData.equals("S") ? true : false
于 2011-01-13T20:38:10.780 に答える
4

Java 三項演算子 と の主な違いは、返された値と返されない値の両方IIfIIf評価するのに対し、三項演算子は返された値のみを短絡して評価することです。評価に副作用がある場合、この 2 つは等価ではありません。

IIfもちろん、静的 Java メソッドとして再実装することもできます。その場合、 と同様に、両方のパラメーターが呼び出し時に評価されますIIf。しかし、Java 言語には組み込みの Java 言語機能としてまったく同じものはありませんIIf

public static <T> T iif(boolean test, T ifTrue, T ifFalse) {
    return test ? ifTrue : ifFalse;
}

(三項演算子を使用するか、この一般的な代替手段を使用して、 Java では引数ifTrueifFalse引数が同じ型でなければならないことに注意してください。)

于 2011-01-13T20:43:14.133 に答える
2

ifが論理iffと同じです。

boolean result;
if (vData.equals("S"))
   result = true;
else
   result = false;

また

boolean result = vData.equals("S") ? true : false;

また

boolean result = vData.equals("S");

編集:しかし、変数を必要としない可能性が非常に高く、代わりに結果に基づいて行動することができます。例えば

if (vData.equals("S")) {
   // do something
} else {
   // do something else
}

ところで、それを使用することは良い習慣と見なされるかもしれません

 if ("S".equals(vData)) {

違いは、vDataがnullであるということです。最初の例では例外がスローされますが、2番目の例ではfalseになります。どちらをしたいのか自問してみてください。

于 2011-01-13T20:39:47.753 に答える