Я предпочитаю использовать цикл while , но нулевое выражение позволяет вам написать это:
for (;;) { thread.run(); }
Тем не менее, нулевое утверждение позволяет вам написать это:
while(true);
{
thread.run();
}
Основная цель которого - напрасно тратить время на плохого программиста по обслуживанию, который приходит за вами и задается вопросом, почему поток не работает. Заявление должно следовать некоторое время. Один ; это утверждение. Так что этот блок операторов на самом деле не является частью цикла.
Это не значит, что нет хорошего применения. Они просто редки. Они обычно выглядят так:
{
;
}
Потому что таким образом это больше похоже на то, что вы хотите сделать (даже этого иногда недостаточно).
В сборке это нулевое утверждение называется NOP . В Python это называется проход . В Java (и других детей в) это точка с запятой, как вы сказали, или даже утверждение «истина»;
Я знаю несколько вариантов использования:
семантический .
Существует разница между пустым пространством и положением нуля в качестве ответа. Там ясно сказано: нет, я не забыла положить что-то здесь. Это ничто не должно быть ничем. Это явно ничего. Это пространство намеренно оставлено пустым. Вот как мы получаем N / A для компиляции.
Нулевой паттерн
Представьте себе сложный и дорогой световой сигнализатор, который неоднократно поднимал цветную лампочку с конвейерной ленты, ввинчивал ее в розетку, включал ее, снимал и брал следующую. Вы можете контролировать, что эта вещь сигнализирует по цвету лампочек, которые вы надеваете на ремень. Отлично, теперь, когда он наконец-то работает безупречно, ваш начальник хочет, чтобы вы создали способ контролировать синхронизацию этих сигналов. Он хочет добавить разрыв между сообщениями. Вы с ужасом помните, что многие части заботятся о времени этих сигналов и о том, как больно было синхронизировать их. Как вы собираетесь контролировать время, не позволяя вам работать на выходных? Вы смотрите на мусорное ведро сгоревших лампочек и получаете, ну, не в буквальном смысле, блестящую идею.
Иногда вы хотите использовать полиморфизм, чтобы просто что-то отключить, не нарушая ничего.
Отладка
Когда вы устанавливаете точку останова, вам должно быть место для нее. Теперь убедитесь, что некоторые отладчики позволят вам установить его на закрывающую фигурную скобку, но если они этого не делают, то приятно, что язык позволяет вам найти место для его размещения, даже если это место ничего не делает.
Не совсем Java, но есть также:
Бинарная игра
Инструкция NOP сборки позволяет возиться с скомпилированным двоичным исполняемым файлом. Но современные Java-компиляторы так много оптимизируют, что я не уверен, что точка с запятой не просто испортилась. Но в старые времена мы также использовали эти пустые места в исполняемом файле для контроля времени или для того, чтобы позже мы могли подключиться. Без NOP там были бы реальные инструкции, поэтому, если вы хотите подключить, вам придется скопировать эти инструкции в другое место, чтобы освободить место для подключения. Это работает так же хорошо в языке c, из которого Java получает большую часть своего синтаксиса. Но я не думаю, что эта зацепка часто происходит в Java. Мы используем Аспектно-ориентированное программирование, чтобы сделать это.