逻辑AND &&
的优先级高于逻辑OR ||
。
这是简单的java代码http://ideone.com/KWUOla
import java.util.*;
import java.lang.*;
import java.io.*;
class Ideone
{
public static void main (String[] args) throws java.lang.Exception
{
if( A() || B() && C() && D() ){
System.out.println("done...");
}
}
public static boolean A(){
System.out.println("This is class A");
return true;
}
public static boolean B(){
System.out.println("This is class B");
return true;
}
public static boolean C(){
System.out.println("This is class C");
return true;
}
public static boolean D(){
System.out.println("This is class D");
return true;
}
}
在此程序中,函数A()
首先完成,然后计算OR,因为左操作数为真,所以满足if条件。
但是根据优先级表,在评估逻辑OR &&
之前,应评估所有逻辑AND ||
。
Java对逻辑AND &&
和逻辑OR ||
具有相同的优先级吗?如果没有,请澄清逻辑AND &&
和逻辑OR ||
之间的优先顺序。
答案 0 :(得分:3)
优先规则通过有效添加括号来消除歧义:
A() || ((B() && C()) && D())
括号不会影响执行顺序,始终从左到右。
然后如你所说,它不需要计算右侧或左侧是真的。 (这称为短路)。
答案 1 :(得分:-1)
它只运行A(),因为它返回true。我强烈建议使用括号。