为什么在类定义的末尾不需要分号但允许分号?

我正在尝试从C ++转向Java。

我想知道的是,在C ++中,在类定义之后,需要使用分号(;),而在Java中则不需要。

也就是说,在C ++中:

class Person {

public:

string name;

int number;

}; // Note this semicolon

但是在Java中:

class Person {

public String name;

public int number;

} // Semicolon is not required

很好,我知道。

但是, :

当我在类定义的末尾添加分号时,Java也可以使用,例如:

class Person {

public String name;

public int number;

}; // Now this semicolon is confusing me!

我已经编译并执行了Java所示的两个程序片段,并且它们均有效。谁能解释为什么会这样?Java类定义末尾的分号代表什么?

很抱歉,这个问题的质量很低,但我确实需要对此进行澄清。希望Java方面的专家能对我有所帮助。

好吧,我已经在类定义和其他相关问题中看到了分号。

提前致谢。

回答:

我已经编译并执行了Java所示的两个程序片段,并且它们均有效。谁能解释为什么会这样?

之所以允许,是因为Java语法说允许。参见JLS

7.6。

Java类定义末尾的分号代表什么?

没有。它是可选的“语法噪声”。

JLS对此进行了如下解释:

多余的“;” 出现在编译单元中类型声明级别的标记对编译单元的含义没有影响。Java编程语言中仅允许使用散列分号作为对习惯于放置“;”的C

++程序员的让步。在类声明之后。它们不应在新的Java代码中使用。


(请注意,这不是“空语句”。在允许使用语句的句法上下文中会出现一个空语句(JLS

14.6)。空语句的存在可以更改代码的含义;例如if(a == b) ; c();vs if (a == b) c();

以上是 为什么在类定义的末尾不需要分号但允许分号? 的全部内容, 来源链接: utcz.com/qa/418560.html

回到顶部