【发布时间】:2010-10-25 13:29:11
【问题描述】:
为什么 func3 在下面的程序中没有被执行?在func1之后,func2不需要被评估但是对于func3,不是吗?
if (func1() || func2() && func3()) {
System.out.println("true");
} else {
System.out.println("false");
}
}
public static boolean func1() {
System.out.println("func1");
return true;
}
public static boolean func2() {
System.out.println("func2");
return false;
}
public static boolean func3() {
System.out.println("func3");
return false;
}
【问题讨论】:
-
这提出了一点,在任何类型的非平凡表达中,用括号声明你的意图是个好主意。因此,即使您打算 (func1() || (func2() && func3()),您也要让后来出现的程序员清楚明白地表明您的代码正在按预期工作。