Java相当于iif函数

时间:2011-01-13 20:36:15

标签: java function if-statement equivalent iif-function

问题很简单,java中有着名的iif功能相当吗?

例如:

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

提前致谢。

4 个答案:

答案 0 :(得分:21)

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

或在这个特殊情况下显然可以写

vData.equals("S")

答案 1 :(得分:5)

是的,三元运作? :

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

答案 2 :(得分:3)

Java三元运算符与IIf之间的主要区别在于IIf计算两者返回值和未返回值,而三元运算符短路和评估只返回值。如果评估存在副作用,则两者不相等。

当然,您可以将IIf重新实现为静态Java方法。在这种情况下,两个参数都将在呼叫时进行评估,就像IIf一样。但是没有内置的Java语言功能完全等同于IIf

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

(请注意,ifTrueifFalse参数必须在Java中具有相同类型,使用三元运算符或使用此通用备选方案。)

答案 3 :(得分: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");

编辑:但是很可能你不需要变量而是可以对结果采取行动。 e.g。

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

顺便说一下,使用

可能是个好习惯
 if ("S".equals(vData)) {

不同之处在于vData为null,第一个示例将抛出异常,而第二个示例将为false。你应该问问自己,你希望发生什么。