Java中的逻辑运算符

Java中的逻辑运算符

问题描述:

Java如何用逻辑运算符编译或计算以下代码? 哪对先执行?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"); 
+0

“Java编译器如何评估以下内容”是什么意思? – Maroun 2014-12-02 12:38:50

+3

以下是运算符优先级表:http://www.cs.bilkent.edu.tr/~guvenir/courses/CS101/op_precedence.html – 2014-12-02 12:40:31

+0

Java如何执行代码?哪一个具有最高优先级? &&或|| ?以及Java如何执行它? – user3545953 2014-12-02 12:41:25

&&优先于||。改写成只需要括号:

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()) { 
    // ... 
} 
+0

这两个&&先执行,然后||在语句块中执行? – user3545953 2014-12-02 13:04:25

+0

@ user3545953它按我提供的顺序执行。 – sp00m 2014-12-02 13:22:58

+0

声明中的|| .. Java如何考虑它? – user3545953 2014-12-02 15:13:33