Есть ли причина, по которой этот файл компилируется нормально?
Почему он не должен компилироваться нормально?Все операторы достижимы, в отличие от первого примера: -)
Многие программы намеренно имеют бесконечные циклы.(Например, сервер, который должен обслуживать клиентов «навсегда».) Не имеет смысла отказываться от компиляции бесконечных циклов.
логически оба должны вызыватьбесконечный цикл и оба должны вызывать ошибку времени компиляции.
Нет, только второй должен приводить к бесконечному циклу.
A while
циклпродолжается , пока условие истинно .Так как false
никогда не является истиной, тело цикла никогда не будет выполнено (поэтому x = 4;
в этом случае недоступно).
Обратите внимание, что если вы выполните ...
public class Test2
{
public static void main(String[] args)
{
int x =0;
while(true)
{
x=4;
}
x = 4; <--------- unreachable!
}
}
... он не скомпилируется, поскольку цикл будет продолжаться вечно, а последний x = 4;
будет недоступен.