Java中是否需要分号?

问题描述 投票:3回答:3

Java语法的基本部分(以及大多数基于C语言的语法)是在每个语句的末尾都需要分号。

但是,我设法编写了以下程序,而不使用任何分号:

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,它警告我缺少分号,但它确实正常工作。然而,当我在posted this on CodeGolf.SE时,其他人评论说它不适用于javac或Eclipse IDE。那么,是否需要分号?

java syntax
3个回答
6
投票

大多数情况下,是必需的分号。

如果需要它们可以在Java Language Specification找到。例如(来自chapter 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,if -then-else等因此,如果您想确切知道何时需要分号,请仔细研究规范。


2
投票

Netbeans最有可能推断出分号,因为每个块中只有一个语句。它在编译之前将它们添加到幕后。

Java需要使用分号,因为它们是规范的一部分。


0
投票

当然他们是必需的。尝试添加分号并检查它是否可以与javac或Eclipse IDE一起使用。在Eclipse中,如果代码不包含分号,则不会运行代码。

© www.soinside.com 2019 - 2024. All rights reserved.