与某些功能进行逻辑或运算

时间:2019-06-17 12:04:40

标签: java bit-manipulation

假设我有一个方法fun()

boolean fun()
{
    System.out.println("Hello World");
    return true;
}

我还有一个变量a

boolean a = true;

现在如果我写

boolean b = a || fun();

Java将评估||的右侧还是停止(因为a已经是true,因此答案总是为true,因此它不会评估||的右侧)。

2 个答案:

答案 0 :(得分:4)

请参阅来自oracle的文档:

  

条件运算符

     

&&和||运算符对两个布尔表达式执行条件与和条件或运算。   这些运算符表现出“短路”行为,这意味着仅在需要时才对第二个操作数进行求值。

https://docs.oracle.com/javase/tutorial/java/nutsandbolts/op2.html

因此,由于“短路” fun()已经确定了最终值,因此Java将不在此处计算a表达式。

如果需要对fun()进行评估,可以快速解决以下问题:

boolean b = fun() || a;

boolean funValue = fun();
boolean b = a || funValue;

答案 1 :(得分:2)

Java不会评估正确的表达式。 如果第一个表达式的值为&&,则false也是如此。

这是必需的,因此您可以执行以下操作:

if (a != null && !a.isEmpty()) {
    //...
}