当你可以制作另一个if语句时,制作else if语句有什么意义?即
使用else语句:
if (x > 1) {
System.out.println("Hello!");
}
if (x < 1) {
System.out.println("Bye!");
}
没有else语句:
dimens.xml
两个代码都给出了相同的解决方案,那么当输出无差异时输入'else'是什么意思?
答案 0 :(得分:2)
最大的区别在于,对于else
,如果第一个条件为真,则不会检查第二个条件 。如果没有else
,将检查第二个条件。
分歧:
else
两者都不匹配,并且两个if
实体都可以执行。else
,第二次评估将第二次触发副作用。x
是易失性字段且其值被另一个字段更改第一次检查后和第二次检查之前的线程,没有else
两个条件都可以匹配,并且两个if
实体都可以执行。要了解我对评估的意义,让x
进行带副作用的函数调用而不仅仅是变量(Java和JavaScript 非常不同,但在这种情况下,我们可以使用JavaScript来演示这个概念):
function x() {
console.log("x called");
return 42;
}
console.log("With else:");
if (x() > 1) {
console.log("> 1");
} else if (x() < 1) {
console.log("< 1");
}
console.log("Without else:");
if (x() > 1) {
console.log("> 1");
}
if (x() < 1) {
console.log("< 1");
}
.as-console-wrapper {
max-height: 100% !important;
}
请注意,x
在没有else
的情况下被称为两次,但在else
时只被称为。
答案 1 :(得分:1)
在你的例子中它没有区别但是现在如果你有一些不同这样的东西:
if (x >= 1) {
System.out.println("Hello!");
}
if (x <= 1) {
System.out.println("Bye!");
}
它将打印两个字符串(如果x等于1),因为条件都是true
答案 2 :(得分:1)
就逻辑而言,只要两个语句使用互斥条件,并且无法与正在运行的线程同时更改x
,就没有区别。
然而,
x
,执行会有所不同:第二个版本可能同时生成"Hello"
和"Bye"
,或者根本没有输出x > 1
return
,break
,continue
或throw
。如果线程被中断,则不再需要else
。答案 3 :(得分:0)
不同之处在于运行时。在if ... else if ... case中如果是正确的情况则else将不会被检查。在if ...然后另一个if ..两个if的情况都将被检查,所以在运行时你还有一个比较。在这样一个小程序中不会有所作为,但考虑一个庞大的程序,有成千上万的情况。 希望我能覆盖你!