Java中的逻辑运算符

时间:2014-12-02 12:37:16

标签: java logical-operators

Java如何使用逻辑运算符编译或评估以下代码? 首先执行哪一对?

else if ((((assign/50)>=0.8) && (((exam/100)<=0.35) || ((exam/100)>=0.4))) ||
                (((exam/100)>=0.8) && (((assign/50)<=0.35) || ((assign/50)>=0.4)))) {
            System.out.println("Pushed Up");

1 个答案:

答案 0 :(得分:2)

&&优先于||。只用必要的parens重写:

    assign / 50 >= 0.8 && (exam / 100 <= 0.35 || exam / 100 >= 0.4)
 || exam / 100 >= 0.8 && (assign / 50 <= 0.35 || assign / 50 >= 0.4)

在Java中(与许多其他语言一样),&&||short-circuit operators。简单来说:

1.  evaluate "assign / 50 >= 0.8"
2.  if true
3.      evalute "exam / 100 <= 0.35"
4.      if true
5.          return true
6.      else
7.          evaluate "exam / 100 >= 0.4"
8.          if true
9.              return true
10.         else
11.             goto 13.
12. else
13.     evaluate "exam / 100 >= 0.8"
14.     if true
15.         evaluate "assign / 50 <= 0.35"
16.         if true
17.             return true
18.         else
19.             evaluate "assign / 50 >= 0.4"
20.             if true
21.                 return true
22.             else
23.                 return false
24.     else
25.         return false

这可能非常有用。例如,NPE永远不会被抛出在以下片段中:

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