Область действия цикла do-while?

В Java тело цикла do-while и условие цикла не принадлежат одной и той же области. Таким образом, следующий код не будет компилироваться:

do {
    boolean b = false;
} while (b); // b cannot be resolved to a variable

Но этот код имеет для меня смысл.

Кроме того, я не могу найти никаких подводных камней, если тело и условие находятся в одной и той же области; поскольку тело всегда будет выполняться, а Java не имеет Goto , я не знаю, как можно пропустить объявление переменной во внешней области тела do-while . Даже если это возможно, компилятор всегда может обнаружить такую ​​возможность и затем выдать ошибки времени компиляции.

Есть ли какая-либо причина для такого поведения (кроме сохранения цикла do-while в том же формате, что и while )? Мне действительно любопытно. Спасибо за любой вклад!

11
задан Dave Newton 20 August 2015 в 13:57
поделиться