right you may have a variable statement being false as a condition to the while loop and it will work. However, if you write "false" or you give a constant (final variable) being false then it won't compile because the statement inside the while loop is unreachable and the compiler can figure that out during compilation.
See, you can change the value of a variable at runtime and that's why the compiler cannot complain about a false condition. However if you have a constant boolean expression whose value is false, the compiler knows that there is no way to change that value at runtime and that the while loop will never be executed, hence the unreachable statement. Try to think as the compiler does... You'll see there is logic in there

HIH
------------------
Valentin Crettaz
Sun Certified Programmer for Java 2 Platform