public class JavaApplication11 {
static boolean fun() {
System.out.println("fun");
return true;
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
boolean status = false;
status = status & fun();
status = fun() & status;
}
}
Java会想,因为status
已经是假的,它不会执行fun
方法吗?我测试过,在这两种情况下,都会执行fun
。但是,它是否可以保证跨Java规范?
答案 0 :(得分:6)
此处不会发生短路评估,因为您使用按位和操作(&
)而不是逻辑和操作({{1} })。
答案 1 :(得分:1)
double &
用于短路操作。使用
status = status && fun();
答案 2 :(得分:1)
&&
运营商保证短路
保证&
运算符不会。