Является ли строка в Java-программе тем же, что и оператор? - PullRequest
6 голосов
/ 18 сентября 2011

Я нуб из Java. Я использовал это только в течение нескольких дней, и я все еще пытаюсь понять все это. В программе строка - это то же самое, что и оператор?

Ответы [ 6 ]

5 голосов
/ 18 сентября 2011

Нет. Я могу написать:

int x = 1; int y = 2;

Это одна строка и два утверждения.

4 голосов
/ 18 сентября 2011

Согласно грамматике Java :

Statement:
    Block
    if ParExpression Statement [else Statement]
    for ( ForInitOpt   ;   [Expression]   ;   ForUpdateOpt ) Statement
    while ParExpression Statement
    do Statement while ParExpression   ; 
    try Block ( Catches | [Catches] finally Block )
    switch ParExpression { SwitchBlockStatementGroups }
    synchronized ParExpression Block
    return [Expression] ; 
    throw Expression   ; 
    break [Identifier]
    continue [Identifier]
    ; 
    ExpressionStatement
    Identifier   :   Statement

Исходя из этого, вы можете легко увидеть, что один оператор может занимать несколько строк, но также одна строка может содержать несколько операторов.Также обратите внимание, что оператор - это очень широкий термин.

4 голосов
/ 18 сентября 2011

Нет. Компилятор Java не смотрит на строки, пробелы или другие проблемы форматирования при компиляции программы. Он просто хочет видеть ; в конце каждого оператора . Эта строка будет работать нормально:

int i = 13; i += 23;

Однако, выполнение таких вещей может - и, скорее всего, приведет - к проблемам с читаемостью исходного кода. По этой причине это не рекомендуется.

Также возможно, чтобы один оператор занимал несколько строк:

int i =
    13;
4 голосов
/ 18 сентября 2011

В программе строка - это то же самое, что и выражение?

Нет.

Хотите узнать разницу?Начните с JLS §14.5: Блоки и операторы :

Statement:
        StatementWithoutTrailingSubstatement
        LabeledStatement
        IfThenStatement
        IfThenElseStatement
        WhileStatement
        ForStatement

StatementWithoutTrailingSubstatement:
        Block
        EmptyStatement
        ExpressionStatement
        AssertStatement
        SwitchStatement
        DoStatement
        BreakStatement
        ContinueStatement
        ReturnStatement
        SynchronizedStatement
        ThrowStatement
        TryStatement

StatementNoShortIf:
        StatementWithoutTrailingSubstatement
        LabeledStatementNoShortIf
        IfThenElseStatementNoShortIf
        WhileStatementNoShortIf
        ForStatementNoShortIf
2 голосов
/ 18 сентября 2011

Только по общепринятой практике и для удобочитаемости.В Java операторы оканчиваются точкой с запятой, а в случае блоков парами фигурных скобок ({}).

2 голосов
/ 18 сентября 2011

Эта строка содержит два утверждения:

j = 5; j += 3;

Итак, строка не обязательно является утверждением ...

...