【发布时间】:2017-05-30 06:05:18
【问题描述】:
这是我previous问题的修订版。
当使用 else-if 作为快捷方式时,我不确定为什么从语法上讲,它执行与嵌套 if-else 语句相同的功能。假设您有以下内容:
int score = 80;
if(score < 80) {
System.out.println("C Grade");
} else if(score < 90) {
System.out.println("B Grade");
} else if(score < 100) {
System.out.println("A Grade");
}
如果我添加一些缩进,我会得到类似于:
if(score < 80) {
System.out.println("C Grade");
} else
if(score < 90) {
System.out.println("B Grade");
} else
if(score < 100) {
System.out.println("A Grade");
}
这与编写嵌套的 if-else 语句相同:
if(score < 80) {
System.out.println("C Grade");
} else {
if(score < 90) {
System.out.println("B Grade");
} else {
if(score < 100) {
System.out.println("A Grade");
}
}
}
但是,我看到了一个主要区别。在第三个代码 sn-p 中,“else”语句有括号,其余的 if-else 语句嵌套在这些括号内。在第一种情况下,没有封装括号。那么,如果嵌套 if-else 语句时似乎需要括号,为什么 else-if 的第一个想法有效呢?我认为缺少控制流语句(例如 if、else、while 等)的括号会导致编译器仅评估以下行,例如:
if(condition)
System.out.println("A");
System.out.println("B");
//only prints "A"
【问题讨论】:
-
else-if 在 Java 中的行为类似于 else 后跟 if - 的内涵。缺少括号不会评估以下行,而是评估以下语句。因为 if (or if else) 是一个声明,所以它非常一致。
-
提问时的提示 - 在你的标题中做出断言(例如假设
else陈述不一致)将导致投票失败,因为人们可能不同意你的断言而不是试图帮助你.而是专注于您真正要问的内容,例如“你能帮我理解else if语句的语法吗?”这将鼓励援助,而不是投反对票。
标签: java if-statement