【发布时间】:2015-03-26 09:43:38
【问题描述】:
我有一个与 switch-case 块中的花括号相关的问题
switch( conditon ) {
case val1: {
// something
}
break;
case val2: {
// something
}
break;
default:
break;
}
或类似的东西:
switch( conditon ) {
case val1: {
// something
break;
}
case val2: {
// something
break;
}
default:
break;
}
A 我知道这两个代码应该以相同的方式工作,但我认为这里存在一些不合理之处。由于中断应该导致从花括号块中跳出,所以理论上第二个代码应该像这样平滑: 1. 突破路线跳出块 2. switch 继续执行 case val2 或 default 原因,大括号外没有任何 break 语句。
您推荐使用哪个版本,它们的工作方式是否真的相同?
【问题讨论】:
-
你几乎可以在任何地方放一个block,在case里面也不例外,但是对控制流没有影响
-
不允许在单纯的复合语句(并且没有开关或循环)中出现中断。因此,它不会“跳出块”。
-
范围定义了所包含变量的生命周期和可见性,仅此而已。
-
您也可以为每个
case块保留花括号 - 它们可能对分隔变量的范围很有用,但它们不是必需的。 -
我知道,但我有同名的变量,使用不同的名称会产生误导,因为这是从 android 内容提供程序中的 URI 读取 ids
标签: java switch-statement break curly-brackets