Error de declaración inalcanzable usando while loop en java [duplicado]

Posible duplicado:
¿Por qué este código da un error de "Declaración inaccesible"?

Esta pregunta parece muy fácil, encontré esta pregunta en un libro. Si alguien me ayuda a averiguar por qué me estoy equivocando.

    do {
        System.out.print("inside do");
    } while (false);
    while (false) { // error
        System.out.print("inside while");
    }
    System.out.print("outside");

Pensé, y según mi opinión, la salida debería serdentro de dooutside. Pero, se está mostrandoError del compilador: Declaración inalcanzable. Entonces, traté de averiguar, por qué, se está mostrandoError de compilación: Declaración inalcanzable * . Entonces, cambio el código anterior como este

  boolean i = false;  
  do {
        System.out.print("inside do");
    } while (false);
    while (i) { // ok
        System.out.print("inside while");
    }
    System.out.print("outside");

Ahora, está mostrando el resultado esperado, es decir,dentro de dooutside . Entonces, mi pregunta es: ¿qué hace la diferencia en el primer y segundo caso? Además, cuando compruebo

if(false){ 
  //something here
   }

Entonces, el código anterior se ejecuta sin ningún error.

Respuestas a la pregunta(2)

Su respuesta a la pregunta