Нужны ли точки с запятой в 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 он не позволяет запускать код, если он не содержит точек с запятой.

Другие вопросы по тегам