Почему Java идентифицирует недоступный код только в случае цикла while? [Дубликат]

На этот вопрос уже есть ответ:

if (false) и while (false): недоступный код или мертвый код 2 ответа

Если у меня есть код, похожий на

public static void main(String args[]){
    int x = 0;
    while (false) { x=3; }  //will not compile  
}

compiler будет жаловаться, чтоx=3 - это недоступный код, но если у меня есть такой код, как

public static void main(String args[]){
    int x = 0;
    if (false) { x=3; }
    for( int i = 0; i< 0; i++) x = 3;   
}

затем он компилируется правильно, хотя код внутриif statement а такжеfor loop недоступен Почему эта избыточность не обнаруживается логикой рабочего процесса Java? Любой случай использования?

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

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