Это старый остаток от дней, когда для отличия выражений от операторов был больше синтаксического сахара.
В принципе, запятая была использована как разделитель элементов списка, поэтому точка с запятой использовалась как " список операторов "разделитель. Недостаток заключается в обработке нулевых элементов в списках и нулевых операторов в блоках.
В списке элементов Java использует явное ключевое слово null
, но «нулевой оператор» является просто пустым линия. Разрешение существования пустой строки - это удержание из традиции, унаследованной от C.
Зачем? Особенно с инструкцией if
, когда вы знаете, что никакие утверждения не выполняются: поскольку некоторые операторы if имеют побочные эффекты:
int c;
if ((c = in.read()) != -1);
Да, это не лучший пример, но в основном он говорит, что читать байт из потока и ничего не делать. Может быть полезно в некоторых случаях, но даже если этот пример не самый лучший, он иллюстрирует намерение. Мы хотим ощущать побочные эффекты выражения без случайного выполнения каких-либо утверждений.