switch 中 java 中的变量范围
scope of a variable in java in switch
我试图了解这在 Java.
中的 switch 语句中是如何有效的
switch(someValue){
case abc: int i=0
break;
case def: int i=0 // error because i declared above is still accessible in this case.`
如果我们说变量在 Java 中具有块作用域,那么在 def 的情况下 "i" 变量不应该是不可访问的吗?还是 case 不被视为 block ?
这个问题应该很多人都遇到过。
为什么这不违反编程的任何基本概念?
因为块是跟在 switch 语句之后的,而不是其中的每个 case:
switch (...) { // start of block
case: ...
break;
...
} // end of block
在 for
循环中使用时,编写 break
不会结束该块;同样,在 switch
中使用时,写入 case
不会开始一个新块。将它们视为跳转到块内的标签可能会有所帮助。
如果你想重用这个变量,你可以在你的案例之后的一个块中定义它:
case abc: {int i=0 ...}
break;
我试图了解这在 Java.
中的 switch 语句中是如何有效的switch(someValue){
case abc: int i=0
break;
case def: int i=0 // error because i declared above is still accessible in this case.`
如果我们说变量在 Java 中具有块作用域,那么在 def 的情况下 "i" 变量不应该是不可访问的吗?还是 case 不被视为 block ? 这个问题应该很多人都遇到过。
为什么这不违反编程的任何基本概念?
因为块是跟在 switch 语句之后的,而不是其中的每个 case:
switch (...) { // start of block
case: ...
break;
...
} // end of block
在 for
循环中使用时,编写 break
不会结束该块;同样,在 switch
中使用时,写入 case
不会开始一个新块。将它们视为跳转到块内的标签可能会有所帮助。
如果你想重用这个变量,你可以在你的案例之后的一个块中定义它:
case abc: {int i=0 ...}
break;