[英]Nested if-else behaviour without braces
考虑以下未格式化的嵌套if-else
Java 代码
if (condition 1)
if (condition 2)
action 1;
else
action 2;
我的问题是:根据 Java 语言规范,如果else
分支适用会怎样?
通过手动重新格式化和添加大括号,这两个中哪一个是正确的?
第 1 块:
if (condition 1) {
if (condition 2) {
action 1;
} else
action 2;
}
}
第 2 块:
if (condition 1) {
if (condition 2) {
action 1;
}
}
else {
action 2;
}
从文档:
Java 编程语言,与 C 和 C++ 以及它们之前的许多编程语言一样,任意规定 else 子句属于它可能所属的最里面的 if。
块 1 是正确的,在没有括号的 if else 情况下,else 链接到最近的 if
if (condition 1)
if (condition 2)
action 1;
else
action 2;
是相同的
if (condition 1)
if (condition 2)
action 1;
else
action 2;
括号也是为了理解层次,方便。 在较大的 if else 语句中,没有括号会使错误非常普遍
只需我的 2 美分即可获得更好的视觉表现。
大括号内的所有内容都将被完全忽略。
if (false) {
if (true)
System.out.println("1");
else
System.out.println("2");
}
块 1 是正确的解释。 else 总是属于最近的'if'。 (栈顶)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.