布尔评估的顺序

时间:2014-01-22 14:49:18

标签: java boolean

对于任何布尔表达式A和B:

A& B等于B&一个

同样地:

将A | B等于B |甲

感谢您的帮助。

3 个答案:

答案 0 :(得分:0)

如果我们谈论Java而你的意思是&&||,那么这些表达式是相同的。

答案 1 :(得分:0)

是的,那些都是一样的。但是,如果您将&更改为&&,则它们将不再相同。

例如:

int a = 10, b = 0;

boolean test  = false && (a / b == 5);  // 1
boolean test2 = (a / b == 5) && false;  // 2

boolean test3 = false & (a / b == 5);   // 3
boolean test4 = (a / b == 5) & false;   // 4

3和4都会抛出ArithmeticException,所以它们是相同的。但是,当1执行并在结果中存储false时,2会抛出ArithmeticException

答案 2 :(得分:0)

这个问题需要澄清。

如果你在谈论&& b,当a和b是方法时,它将如下:

首先评估a,然后b。

a()&& B(): 将首先调用a,如果返回false,则不会调用b()。

b()&&一个(): 如果b返回false,则不会调用a。

实际例子:

if (obj != null && obj.isXXX())

不等于

if (obj.isXXX() && obj != null)

在第一种情况下,一切都会好的。在第二个NullPointerException将被抛出。

此外,&& b不等于b&& a在这种情况下,当a或b可以改变状态时。