Нужны ли точки с запятой в Java?
Основная часть синтаксиса Java (как и большинства языков на основе Си) заключается в том, что в конце каждого оператора необходимо использовать точки с запятой.
Однако мне удалось написать следующую программу, не используя точки с запятой:
class Hello extends Exception
{
Hello(String s)
{
super(s)
}
}
public class HelloWorld
{
public static void main(String[] args) throws Hello
{
world((char)130)
}
static void world(char c) throws Hello
{
throw new Hello(new String(new char[]{c}))
}
}
Запустив NetBeans 7.4, он предупредил меня об отсутствии точек с запятой, но он работал правильно. Однако, когда я разместил это на CodeGolf.SE, другие заметили, что он не работает с javac
или Eclipse IDE. Итак, нужны точки с запятой или нет?
3 ответа
В основном да, точка с запятой обязательна.
Когда именно они требуются, можно найти в Спецификации языка Java. Например (из главы 14):
14,4. Заявления о локальной переменной
LocalVariableDeclarationStatement:
LocalVariableDeclaration ;
14,6. Пустое заявление
EmptyStatement:
;
14.8. Выражения выражения
ExpressionStatement:
StatementExpression ;
14,10. Утверждение утверждения
AssertStatement:
assert Expression1 ;
assert Expression1 : Expression2 ;
14,13. Заявление делать
DoStatement:
do Statement while ( Expression ) ;
И так далее, и так далее. Как видите, точки с запятой на самом деле прямо в спецификации, как буквальный текст. Я нахожу, что эти спецификации языка всегда немного читать, но в основном они определяют синтаксис от небольших, вроде атомарных понятий, таких как "EmptyStatement", ключевых слов и буквального текста, до структур более высокого уровня, таких как do-while, если - затем - и т. д. Итак, если вы хотите точно знать, когда вам нужна точка с запятой или нет, внимательно изучите спецификацию.
Netbeans, скорее всего, выводит точки с запятой, потому что у вас есть только один оператор в каждом блоке. Он добавляет их за кулисы перед компиляцией.
Точки с запятой требуются для Java, потому что они являются частью спецификации.
Конечно они необходимы. Попробуйте добавить точку с запятой и проверьте, будет ли она работать с javac или Eclipse IDE. В Eclipse он не позволяет запускать код, если он не содержит точек с запятой.