Когда в Java возникает условие «недоступный код»?

Когда после бесконечного цикла записывается какое-то утверждение, оно становится недоступным кодом. Например:

for(;;) 
{
}
Sytem.out.println("Test-1"); //unreachable code

Но я сталкиваюсь здесь с некоторыми трудностями.

Посмотрите на два фрагмента кода ниже:

Фрагмент кода1:

for(final int z=4;z<6;)
{
}
System.out.println("Test-2"); //unreachable code

Здесь, последний оператор должен быть недоступен, потому что цикл бесконечен, а результат соответствует ожидаемому.

Код Snippet2:

final int z=4;
for(;;)
{
    if(z<2)
        break;
}
System.out.println("Test-3");  //not unreachable

Концептуально цикл for в приведенном выше коде также бесконечен, поскольку z является конечным иif(z<2) определяется только во время компиляции. Условие if никогда не будет истинным, и цикл никогда не прервется. Но последнее утверждение в приведенном выше коде не является недостижимым.

Вопросы:

Почему это происходит?

Может кто-нибудь сказать мне точные правила, по которым мы можем видеть, недоступен ли код или нет.

Ответы на вопрос(3)

Ваш ответ на вопрос