【问题标题】:scope of a variable in java in switch [duplicate]开关中Java中变量的范围[重复]
【发布时间】:2015-03-13 20:01:34
【问题描述】:

我试图了解这在 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中具有块作用域,那么在def的情况下“i”变量不应该是不可访问的吗?还是案件不被视为一个块? 这个问题想必很多人都遇到过。

为什么这不违反任何编程的基本概念?

【问题讨论】:

  • switch 定义了一个块,而不是 case
  • 哦,谢谢你...

标签: java switch-statement case


【解决方案1】:

因为块是在 switch 语句之后的,而不是其中的每个案例:

switch (...) { // start of block
  case: ...
  break;
  ...
} // end of block

for 循环中使用时,写入break 并不会结束该块;同样,当switch 中使用case 时,它不会开始一个新块。将它们视为在块内跳转的标签可能会有所帮助。

如果你想重用这个变量,你可以在你的案例之后的一个块中定义它:

case abc: {int i=0 ...}
  break;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-23
    • 1970-01-01
    • 1970-01-01
    • 2020-08-14
    • 2013-09-27
    • 2015-08-20
    • 1970-01-01
    相关资源
    最近更新 更多