¿Por qué Java identifica el código inalcanzable solo en el caso del ciclo while? [duplicar

Esta pregunta ya tiene una respuesta aquí:

if (falso) vs. while (falso): código inalcanzable vs. código muerto 2 respuestas

Si tengo un código como

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

compiler se quejará de quex=3 es un código inalcanzable pero si tengo un código como

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

then se compila correctamente aunque el código dentro deif statement yfor loop es inalcanzable. ¿Por qué esta redundancia no es detectada por la lógica de flujo de trabajo de Java? ¿Algún caso de uso?

Respuestas a la pregunta(3)

Su respuesta a la pregunta