6

我是一个Java菜鸟。我只用了几天,我还在努力弄清楚。在程序中,一行和一个语句是一样的吗?

4

6 回答 6

5

不,我可以写:

int x = 1; int y = 2;

那是一行,两个语句。

于 2011-09-18T17:23:06.430 回答
4

在程序中,一行和一个语句是一样的吗?

不。

想知道区别吗?从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
于 2011-09-18T17:22:31.747 回答
4

不会。Java 编译器在编译程序时不会考虑行、间距或其他格式问题。它只是想在每个语句;的末尾看到。这条线可以正常工作:

int i = 13; i += 23;

然而,做这样的事情可能——而且很可能会——导致源代码的可读性问题。出于这个原因,不建议这样做。

单个语句也可以跨越多行:

int i =
    13;
于 2011-09-18T17:23:01.610 回答
4

根据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

基于此,您可以很容易地看到一个语句可以跨越多行,但单行可以承载多个语句。另请注意,声明是一个非常广泛的术语。

于 2011-09-18T17:23:29.423 回答
2

这一行包括两个语句:

j = 5; j += 3;

所以,一行不一定是一个陈述......

于 2011-09-18T17:22:57.997 回答
2

仅通过常规做法,并且为了可读性。在 Java 中,语句以分号结尾,或者在块的情况下,由一对花括号 ( { } ) 终止。

于 2011-09-18T17:23:20.550 回答