区别,如果,如果(JAVA)
问题描述:
我在想,如果有这两个码之间的任何差别:区别,如果,如果(JAVA)
代码1:
if(isSleepy()){
sleep(1);
} else if (isBored()){
dance();
dance();
} else {
walkRight(50);
walkLeft(50);
if(isHungry()){
eat();
}
}
代码2:
if(isSleepy()){
sleep(1);
}
if (isBored()){
dance();
dance();
}
walkRight(50);
walkLeft(50);
if(isHungry()){
eat();
}
我如果仅替换if-elseif-if链。这是否会影响有条件的过程?
答
这会影响条件过程吗?
是的,它的作用。在第一种情况下,如果isSleepy()
返回true,则从不调用isBored()
,也不检查其结果。在第二种情况下,它检查是,它是完全独立的。同样,如果isSleepy()
返回true,则walkRight
和walkLeft
将不会在第一个块中调用,但他们将位于第二个块中。
第一个代码块的重新格式化可能有助于使事情更加清晰;
if(isSleepy()){
sleep(1);
} else {
// The below only happens if isSleepy() returned false
if (isBored()){
dance();
dance();
} else {
// These only happen if isSleepy() returned false AND isBored() returned false
walkRight(50);
walkLeft(50);
if(isHungry()){
eat();
}
}
}
+1
感谢您的明确解释。代码内评论帮助很大。 – Dreadlockyx
答
else if
仅在前面的if
条件失败时检查。如果一个接一个地执行和评估,无论preceeding
if语句发生了什么,简单。
要了解,如果简单地条件else if
是true
这要是if
条件为真本身是从来没有检查翻译if-else
意味着
答
在第一种情况下,else
块从未检查。
在第二种情况下,两个if
条件都被检查并且第三个块不在任何条件之内,它总是被执行。
这会影响有条件的过程吗?
在第一个代码中,条件是互斥的,但在第二个代码中,两个条件可能同时为真。
你试过运行它,看看会发生什么? –
是的。由于布尔型疲劳是错误的,所以在第一种情况下它会做“跳舞”两次。在跳舞两次后,“吃()”没有被调用,所以我才来到这里来了解有条件的过程。 – Dreadlockyx