(我真的不知道如何更好地表达这个问题。我确定这里有一个我不知道的概念,所以如果可以,请提出更好的措辞 - 如果结果是重复,请指导我回答问题
我一直在玩Java,发现了一些我无法解释的行为。在以下代码中,我希望打印0
。但是,没有打印任何内容。我能想到的唯一可能的解释是主要方法在刷新流之前结束,但对我来说这可能没有意义。简而言之,这个代码什么都不打印而不是0
?
class Test {
public static void main (String [] args) {
if(false && method()){
}
}
public static boolean method(){
System.out.println(0);
return true;
}
}
答案 0 :(得分:1)
因为没有调用该方法。 false
导致和short-ciruit。
if(false & method()){ // <-- body will not execute, but the evaluation
// does not short circuit.
或强>
if(false || method()){ // <-- body will execute, method() is true
或强>
if(method() && false){ // <-- body will not execute, because of false.
将按预期工作。