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");
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