2015-03-13 2 views
2

Я пытаюсь понять, как это справедливо в случае оператора switch в Java.область действия переменной в java в коммутаторе

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, должны не «я» переменная будет недоступна в случае опр? Или дело не рассматривается как блок? Многие люди, должно быть, столкнулись с этой проблемой раньше.

Почему это не нарушает каких-либо фундаментальных концепций программирования?

+2

Параметр 'switch' определяет блок, а не' case'. –

+0

ohhk получил u спасибо ... – user1079065

ответ

4

Поскольку блок, что следует переключатель заявление, не каждый случай в ней:

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

Запись break не положит конец блока, когда он используется в for цикле; Аналогично, запись case не начинается с нового блока, когда он используется в switch. Это может помочь думать о них как меток для перехода в блок.

Если вы хотите использовать переменную, вы можете определить его в блок после вашего случая:

case abc: {int i=0 ...} 
    break; 
Смежные вопросы