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");
&&
优先于||
。改写成只需要括号:
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()) {
// ...
}
这两个&&先执行,然后||在语句块中执行? – user3545953 2014-12-02 13:04:25
@ user3545953它按我提供的顺序执行。 – sp00m 2014-12-02 13:22:58
声明中的|| .. Java如何考虑它? – user3545953 2014-12-02 15:13:33
“Java编译器如何评估以下内容”是什么意思? – Maroun 2014-12-02 12:38:50
以下是运算符优先级表:http://www.cs.bilkent.edu.tr/~guvenir/courses/CS101/op_precedence.html – 2014-12-02 12:40:31
Java如何执行代码?哪一个具有最高优先级? &&或|| ?以及Java如何执行它? – user3545953 2014-12-02 12:41:25