我试图理解这在 Java 中 switch 的 case 语句中是如何有效的。
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 中具有 block 作用域,那么在 def 的情况下“i”变量不应该是不可访问的吗?或者案件没有被视为一个 block ? 这个问题想必很多人都遇到过。
为什么这没有违反任何编程的基本概念?
最佳答案
因为该 block 是 switch 语句之后的内容,而不是其中的每个 case:
switch (...) { // start of block
case: ...
break;
...
} // end of block
当在 for
循环中使用时,编写 break
并不会结束该 block ;同样,当在 switch
中使用时,编写 case
不会开始一个新 block 。将它们视为要在 block 内跳转的标签可能会有所帮助。
如果您想重用该变量,您可以在案例之后的 block 中定义它:
case abc: {int i=0 ...}
break;
关于java - java中switch中变量的作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29040975/