В Java тело цикла do-while
и условие цикла не принадлежат одной и той же области видимости. Поэтому следующий код не будет компилироваться:
do {
boolean b = false;
} while (b); // b cannot be resolved to a variable
Но этот код имеет смысл для меня.
Кроме того, я не могу найти никаких подводных камней, если тело и состояние находятся в одной и той же области видимости; поскольку тело всегда будет выполняться, а в Java нет Goto
, я не знаю, как можно пропустить объявление переменной в самой внешней области видимости do-while
тела. Даже если это возможно, компилятор всегда может обнаружить такую возможность и затем выдавать ошибки времени компиляции.
Есть ли какая-либо причина для такого поведения (кроме сохранения цикла do-while
в том же формате, что и while
)? Мне действительно любопытно. Спасибо за любые комментарии!