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。那么,是否需要分号?
答案 0 :(得分: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。 do Statement
DoStatement:
do Statement while ( Expression ) ;
依此类推。正如您所看到的那样,分号实际上就在规范中,作为文字文本。我发现这些语言规范总是有点时髦阅读,但基本上它们是从小型的原子概念定义语法,例如'EmptyStatement',关键字和文字文本,直到更高级别的结构,如do-while,if -then-else等因此,如果您想确切知道何时需要分号,请仔细研究规范。
答案 1 :(得分:2)
Netbeans很可能推断分号,因为每个块中只有一个语句。它在编译之前将它们添加到幕后。
Java需要使用分号,因为它们是规范的一部分。
答案 2 :(得分:0)
当然他们是必需的。尝试添加分号并检查它是否可以与javac或Eclipse IDE一起使用。在Eclipse中,如果代码不包含分号,则不会运行代码。